2011-07-25 18 views
8

Puedo obtener el número de teléfono de una llamada entrante o de un mensaje sms. desafortunadamente, en el caso de los SMS puede haber el código de país en él. Entonces, básicamente necesito obtener el número de teléfono simple, sin código de país, para compararlo con los números existentes en Contactos.Obtener número de teléfono sin código de país en Android

Respuesta

25

Si desea comparar los números de teléfono que puede utilizar siempre el

PhoneNumberUtils.compare(number1, number2); 

o

PhoneNumberUtils.compare(context, number1, number2); 

Entonces no tiene que preocuparse por el código de país, simplemente comparará los números del orden inverso y verá si coinciden (lo suficiente para fines de identificación de llamadas al menos).

+0

Esto parece funcionar lo suficientemente bien para mí. Gracias por tu ayuda. – Alin

+0

buena solución que funciona bien para mí – kathir

-1

enfoque no probados rápido (los números de teléfono que yo sepa tienen 10 dígitos):

// As I said, AFAIK phone numbers have 10 digits... (at least here in Mexico this is true) 
int digits = 10; 
// the char + is always at first. 
int plus_sign_pos = 0; 

// Always send the number to this function to remove the first n digits (+1,+52, +520, etc) 
private String removeCountryCode(String number) { 
    if (hasCountryCode(number)) { 
     // +52 for MEX +526441122345, 13-10 = 3, so we need to remove 3 characters 
     int country_digits = number.length() - digits; 
     number = number.substring(country_digits); 
    } 
    return number; 
} 

// Every country code starts with + right? 
private boolean hasCountryCode(String number) { 
    return number.charAt(plus_sign_pos) == '+'; // Didn't String had contains() method?... 
} 

continuación, que acaba de llamar a estas funciones

+6

Su solución es ideal para la longitud de un número de teléfono fijo. Desafortunadamente hay varias longitudes en todo el mundo. – Alin

+1

Esto no funcionaría en todas partes, porque la longitud del código de país es – Caner

+3

... y en algunos países la longitud de los números de teléfono también varía; consulte el Reino Unido para ver algunos ejemplos. –

Cuestiones relacionadas