2011-01-10 11 views
10

utilizo BroadcastReceiver para interceptar las llamadas entrantes en el teléfono Android como continuaciónAndroid: cómo detectar un número privado mediante programación

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

En el caso "número privado", he probado en dos dispositivos, se muestra el número como -1 en HTC Wildfire y -2 en Galaxy S. Revisé el android.telephony.PhoneNumberUtils pero no pudo ayudarme.

¿Existe una función o una forma genérica de detectar un número privado en el teléfono Android?

Respuesta

11

Has respondido bastante a tu propia pregunta. Los números privados se envían al teléfono como -1 o -2. En mi aplicación, busco un valor entero que sea menor que 0 y, si lo es, lo trato como un número privado. Esto suena como lo que quieres hacer también.

Espero que mis pensamientos sean útiles.

+1

No estoy seguro de que funcione para todos los dispositivos ya que no pude encontrar ningún documento al respecto. –

+0

Estoy de acuerdo contigo. No sé si hay algún dispositivo que rompa esta regla de "menos de cero", pero por ahora parece funcionar para mí. Como no hay documentación y los dispositivos Android son numerosos en su implementación, voy a seguir esta regla hasta que reciba un informe de error de un usuario. No es lo mejor que se puede hacer, pero es lo único que se da a los hechos en este momento. –

+2

@BaoLe El motivo por el que esto funciona se puede ver en la fuente de Android de CallLog.java. Aquí hay un enlace, http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android /4.0.3_r1/android/provider/CallLog.java#269 llamadas a las que se restringe se les asigna una constante, definida en com.android.internal.telephony.CallerInfo como -1 para Desconocido, -2 para privado y -3 para número de teléfono público – Sojurn

Cuestiones relacionadas