So blockieren Sie Anrufe in Android

73

Ich möchte Anrufe von wenigen Nummern blockieren, dafür möchte ich eine eigene App schreiben. Welche APIs sollte ich verwenden?

Grundsätzlich möchte ich benachrichtigt werden, wenn ein Anruf kommt. Ich möchte Nummern vergleichen, wenn es das ist, was ich blockieren möchte. Ich möchte den Anruf abbrechen oder stummschalten oder wenn möglich stumm schalten und aufzeichnen.

Anurag Uniyal
quelle
Ich denke, es ist möglich, eingehende Anrufe zu blockieren. Versuchen Sie dies: stackoverflow.com/questions/7121508/…
Vineet Shukla
Bitte akzeptieren Sie die falsche Antwort nicht. Für einige kann es verwirrend sein, dass die akzeptierte Antwort nicht die richtige ist.
Ayanami
Bitte überprüfen Sie diese aktualisierte Antwort unten .
Amit Vaghela

Antworten:

65

OH MEIN GOTT!!! JA DAS KÖNNEN WIR TUN!!! Ich wollte mich nach 24 Stunden Nachforschungen und Entdeckungen umbringen ... Aber ich habe eine "frische" Lösung gefunden!

// "cheat" with Java reflection to gain access to TelephonyManager's
// ITelephony getter
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony)m.invoke(tm);

Hunderte von Menschen, die ihre Anrufsteuerungssoftware entwickeln möchten, besuchen diesen Startpunkt

Es gibt ein Projekt. und es gibt wichtige Kommentare (und Credits)

kurz: Hilfedatei kopieren, Berechtigungen zum Manifest hinzufügen, Quelle kopieren und einfügen für die Telefonieverwaltung)))

Noch ein paar Infos für dich. AT-Befehle können Sie nur senden, wenn Sie gerootet sind. Dann können Sie den Systemprozess beenden und Befehle senden, aber Sie müssen neu starten, damit Ihr Telefon Anrufe empfangen und senden kann =)))

Ich bin sehr glücklich =) Jetzt wird mein Shake2MuteCall ein Update bekommen!

für dich
quelle
6
Auch wenn das funktioniert, scheint es mir ein wenig riskant. Ihre Anwendung kann ohne vorherige Ankündigung beschädigt werden, wenn sich die interne API ändert.
Guido
4
Dies liegt daran, dass Google Code heruntergefahren wurde. Genau deshalb warnen die Leute hier vor Link Rot. Veröffentlichen Sie alles Relevante in Ihren Posts. Sie mögen denken, Google ist eine Quelle, der Sie vertrauen können, dass sie für immer aktiv bleibt, aber wie Sie sehen, werden sogar deren Links beschädigt.
o_O
Gibt es eine Möglichkeit, Anrufe an die Voicemail zu senden?
Pulver366
NoSuchMethodException bei Methode m = c.getDeclaredMethod ("getITelephony") abrufen; .. Wie vermeide ich das ????
Uniruddh
Was ist ITelephony in der letzten Zeile? Bitte antworten Sie Ich kann es nicht importieren
Shirish Herwade
5

Es ist möglich und Sie müssen es nicht selbst codieren.

Stellen Sie einfach die Ruftonlautstärke auf Null und die Vibration auf Null, wenn incomingNumber einer leeren Zeichenfolge entspricht. Das ist es ...

Es ist nur für Sie mit der Anwendung Nostalk von Android Market erledigt. Probieren Sie es einfach aus ...


quelle
7
Bei der Frage geht es nicht um eine solche App, sondern darum, wie Sie eingehende Nummern programmgesteuert blockieren können. + Woher weiß ich, wie die Nummer lautet?
Anurag Uniyal
1
Es ist nicht so schwer ... Wenn Sie in die SDK-Referenz schauen, werden Sie feststellen, dass es einen onCallStateChangeListener () gibt, der in Ihrer App registriert werden muss. Sobald dies erledigt ist, erhalten Sie den callState, der IDLE, RINGING oder OFF_HOOK sein kann. Außerdem liefert Ihnen der Listener die eingehende Nummer ... Dies ist der Punkt, an dem Ihre Aktion ausgeführt wird. Leider bietet Ihnen das SDK nicht wirklich die Möglichkeit, einen Anruf abzubrechen. Diese Funktionen sind NICHT öffentlich verfügbar. Sie sind so versteckt, dass Sie nicht darauf zugreifen können.
4

In Android-N ist diese Funktion enthalten. Überprüfen Sie das Update zum Blockieren von Nummern für Android N.

Android N unterstützt jetzt das Blockieren von Nummern auf der Plattform und bietet eine Framework-API, mit der Dienstanbieter eine Liste blockierter Nummern verwalten können. Die Standard-SMS-App, die Standard-Telefon-App und die Anbieter-Apps können aus der Liste der blockierten Nummern lesen und in diese schreiben. Die Liste ist für andere Apps nicht zugänglich.

Vorteil sind:

  1. Bei Anrufen gesperrte Nummern werden auch bei Texten gesperrt
  2. Blockierte Nummern können über die Funktion "Sichern und Wiederherstellen" über Resets und Geräte hinweg bestehen bleiben
  3. Mehrere Apps können dieselbe Liste blockierter Nummern verwenden

Weitere Informationen finden Sie unter android.provider.BlockedNumberContract

Aktualisieren Sie ein vorhandenes Projekt.

Um Ihre App für die Android N-Plattform zu kompilieren , müssen Sie das Java 8 Developer Kit (JDK 8) verwenden . Um einige Tools mit Android Studio 2.1 verwenden zu können , müssen Sie die Java 8 Runtime Environment (JRE 8) installieren .

Öffnen Sie die Datei build.gradle für Ihr Modul und aktualisieren Sie die Werte wie folgt:

android {
  compileSdkVersion 'android-N'
  buildToolsVersion 24.0.0 rc1
  ...

  defaultConfig {
     minSdkVersion 'N'
     targetSdkVersion 'N'
     ...
  }
  ...
}
Amit Vaghela
quelle
Links dieses Beitrags sind ungültig! Beide bekommen 404 nicht gefunden!
Hadilq
Ab diesem Kommentar können Sie die Links hier anzeigen: developer.android.com/about/versions/nougat/… developer.android.com/reference/android/provider/… Auch die Anrufüberprüfung war relevant: developer.android. com / about / version / nougat /…
Joel McBeth
3

Sie können einfach bestimmte Nummern in Ihren Kontakten an Ihre Voicemail weiterleiten. Das wird schon unterstützt.

Ansonsten wäre die Dokumentation für 'Kontakte' ein guter Ort, um mit der Suche zu beginnen.

Cogsy
quelle
0

Sie können dies tun, indem Sie Telefonanrufereignisse abhören. Sie tun dies, indem Sie einen BroadcastReceiver für PHONE_STATE und NEW_OUTGOING_CALL haben. Dort finden Sie die Telefonnummer.

Wenn Sie sich dann entscheiden, den Anruf zu beenden, ist dies etwas schwierig, da es nur mit Android P garantiert funktioniert. Überprüfen Sie hier .

Android-Entwickler
quelle