2011-01-10 32 views
10

Io uso BroadcastReceiver di intercettare chiamate in arrivo sul telefono Android come di seguitoAndroid: come rilevare un numero privato a livello di codice

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

Nel caso "numero privato", ho provato su due dispositivi, mostra il numero di -1 su HTC Wildfire e -2 su Galaxy S. Ho controllato il android.telephony.PhoneNumberUtils ma non poteva aiutarmi.

Esiste una funzione o un modo generico per rilevare un numero privato sul telefono Android?

risposta

11

Hai praticamente risposto alla tua stessa domanda. I numeri privati ​​vengono inviati al telefono come -1 o -2. Nella mia app controllo un valore intero inferiore a 0 e, se lo è, lo considero come un numero privato. Questo suona come quello che vuoi fare anche tu.

Spero che i miei pensieri siano utili.

+1

Non sono sicuro che funzioni per tutti i dispositivi poiché non sono riuscito a trovare alcun documento a riguardo. –

+0

Sono d'accordo con te. Non so se ci sono dei dispositivi là fuori che infrangono questa regola "meno di zero", ma per ora sembra funzionare per me. Poiché non c'è documentazione e i dispositivi Android sono numerosi nella loro implementazione, ho intenzione di rispettare questa regola fino a quando non ricevo un rapporto di errore da un utente. Non è la cosa migliore da fare, ma l'unica cosa data i fatti in questo momento. –

+2

@BaoLe Il motivo per cui questo funziona può essere visto la fonte Android di CallLog.java qui è un collegamento, http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android /4.0.3_r1/android/provider/CallLog.java#269 alle chiamate a cui viene assegnata una restrizione viene assegnata una costante, definita in com.android.internal.telephony.CallerInfo come -1 per Unknown, -2 per private e -3 per numero di telefono pubblico – Sojurn

Problemi correlati