2011-01-10 10 views
10

I BroadcastReceiver verwenden erkennen eingehenden Anruf auf dem Android-Handy abfangen wie untenAndroid: wie eine private Nummer programmatisch

tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
Bundle bundle = intent.getExtras(); 
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

In dem „privaten Nummer“ Fall mich auf zwei Geräte getestet, zeigt es die Zahl als -1 auf HTC Wildfire und -2 auf Galaxy S. Ich überprüfte die android.telephony.PhoneNumberUtils aber es konnte mir nicht helfen.

Gibt es eine Funktion oder eine allgemeine Möglichkeit, eine private Nummer auf Android-Telefon zu erkennen?

Antwort

11

Sie haben ziemlich Ihre eigene Frage beantwortet. Private Nummern werden an das Telefon als -1 oder -2 gesendet. In meiner App suche ich nach einem ganzzahligen Wert, der kleiner als 0 ist, und wenn es so ist, behandle ich es als private Nummer. Das klingt nach dem, was du auch machen willst.

Ich hoffe, dass meine Gedanken hilfreich sind.

+1

Ich bin nicht sicher, dass es für alle Geräte funktioniert, da ich kein Dokument darüber finden konnte. –

+0

Ich stimme dir zu. Ich weiß nicht, ob es irgendwelche Geräte gibt, die diese "weniger als Null" -Regel brechen, aber im Moment scheint es für mich zu funktionieren. Da es keine Dokumentation gibt und Android-Geräte in ihrer Implementierung zahlreich sind, gehe ich mit dieser Regel, bis ich einen Fehlerbericht von einem Benutzer erhalte. Nicht das Beste, was man tun kann, aber das einzige, was die Fakten zu dieser Zeit betrifft. –

+2

@BaoLe Der Grund, warum das funktioniert, kann die androide Quelle von CallLog.java gesehen werden hier ist ein Link, http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android /4.0.3_r1/android/provider/CallLog.java#269 Anrufe, die eingeschränkt sind, erhalten eine Konstante zugewiesen, die in com.android.internal.telephony.CallerInfo als -1 für Unbekannt, -2 für Privat und -3 für Nummer des gebührenpflichtigen Telefons definiert ist – Sojurn