2009-07-05 11 views
67

Ich möchte Anrufe von wenigen Nummern blockieren, dafür möchte ich eine App von mir selbst schreiben. Also, was sind die APIs, die ich verwenden sollte?Wie man Anrufe in android blockiert

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

+0

Ich denke, es möglich ist, eingehenden Anruf zu blockieren. Versuchen Sie folgendes: http://stackoverflow.com/questions/7121508/android-taking-complete-control-of-phone-is-it-possible-how/7121586#7121586 –

+0

http://stackoverflow.com/a/5268927/1939564 –

+0

Bitte akzeptieren Sie die falsche Antwort nicht, es könnte für einige verwirrend sein, dass die angenommene Antwort nicht die richtige ist. – ayanami

Antwort

3

Sie könnten bestimmte Nummern in Ihren Kontakten einfach an Ihre Voicemail umleiten. Das wird bereits unterstützt.

Ansonsten denke ich, die Dokumentation für 'Kontakte' wäre ein guter Ort, um zu suchen.

5

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

Setzen Sie die Ruftonlautstärke auf null und vibrieren Sie auf keine, wenn incomingNumber einer leeren Zeichenfolge entspricht. Das ist es ...

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

+6

Frage ist nicht über eine solche App, es ist, wie Sie eingehende Nummer programmgesteuert + in Ihrer Lösung blockieren, wie werde ich wissen, was ist die Nummer? –

+1

Es ist nicht so schwer ... Wenn Sie in den SDK-Verweis schauen, sehen Sie, dass es einen onCallStateChangeListener() gibt, der in Ihrer App registriert werden muss. Sobald es fertig ist, wird es Ihnen den CallState liefern, der einer von IDLE, RINGING oder OFF_HOOK sein könnte. Außerdem wird dir der Hörer die incomingNumber liefern ... Das ist der Punkt, an dem deine Aktion stattfindet. Leider bietet das SDK nicht wirklich die Möglichkeit, einen Anruf zu beenden, diese Funktionen sind NICHT öffentlich verfügbar, sie sind so versteckt, dass sie nicht zugänglich sind. –

64

OMG !!! JA DAS KÖNNEN WIR TUN!!! Ich würde mich nach schweren 24 Stunden der Untersuchung und Entdeckung töten ... Aber ich habe "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); 

alle alle alle von Hunderten von Menschen, die ihre Call-Control-Software Besuch this start point

gibt es ein Projekt entwickeln will. und es gibt wichtige Anmerkungen (und Kredite)

kurz: Kopieren AIDL Datei, Berechtigungen hinzufügen zu manifestieren, Copy-Paste-Quelle für Telefonie-Management)))

Einige weitere Informationen für Sie. AT-Befehle, die Sie nur senden können, wenn Sie verwurzelt sind. Dann kannst du den Systemprozess beenden und Befehle senden, aber du brauchst einen Neustart, damit dein Telefon Anrufe empfangen und senden kann =)))

Ich bin sehr hapy =) Jetzt bekommt mein Shake2MuteCall ein Update!

+6

Auch wenn das funktioniert, scheint es mir ein wenig riskant. Ihre Anwendung kann ohne vorherige Ankündigung unterbrochen werden, wenn sich die interne API ändert. –

+15

2.3 Lebkuchen bricht diese –

+7

der Link ist kaputt .... –

3

In android-N ist diese Funktion enthalten. überprüfen Number-blocking Update für Android-N

Android N unterstützt jetzt Anzahl blockierungs in der Plattform und bietet eine Framework-API Diensteanbieter unterhalten ein blockiertes-Nummernliste zu lassen. Die Standard-SMS-App, die Standardtelefon-App und die Anbieter-Apps können aus der Liste blockierter Nummern lesen und in diese schreiben. Die Liste ist nicht zugänglich zu anderen App.

Vorteil sind:

  1. Zahlen Sie auf Anrufe blockiert werden auch
  2. Blockierte Nummern & bestehen können Feature
  3. Mehrere Anwendungen können Wiederherstellen über Resets und Geräte durch die Backup auf Texte blockiert verwenden die gleiche Liste blockierter Nummern

Für mehr Informationen Siehe android.provider.BlockedNumberContract

Aktualisieren Sie ein vorhandenes Projekt.

Um Ihre App gegen die Plattform Android N kompilieren, müssen Sie die Java 8 Developer Kit (JDK 8) und verwenden, um einige Werkzeuge mit Android Studio 2.1, Sie verwenden müssen, um installieren die Java 8 Laufzeitumgebung (JRE 8).

öffnen build.gradle Datei für das Modul und die Werte wie folgt aktualisieren:

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

    defaultConfig { 
    minSdkVersion 'N' 
    targetSdkVersion 'N' 
    ... 
    } 
    ... 
} 
+0

Links dieses Beitrags sind nicht gültig! Beide bekommen 404 nicht gefunden! – hadilq

+2

das sind Links von https://developer.android.com offizielle Seite –

+0

Ab diesem Kommentar können Sie die Links hier sehen: https://developer.android.com/about/versions/nougat/android-7.0.html# Nummernblockierung https://developer.android.com/reference/android/provider/BlockedNumberContract.html Auch die Anruf-Screening als relevant gefunden: https://developer.android.com/about/versions/nougat/android-7.0.html#call_screening – jcmcbeth