Pregunta

Puedo obtener el número de teléfono de una llamada entrante o de un mensaje SMS. Desafortunadamente, en el caso del SMS podría haber el código de país. Por lo tanto, 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 los contactos.

¿Fue útil?

Solución

Si desea comparar los números de teléfono, siempre puede usar el

PhoneNumberUtils.compare(number1, number2);

o

PhoneNumberUtils.compare(context, number1, number2);

Entonces no tiene que preocuparse por el código de país, solo comparará los números del orden invertido y verá si coinciden (al menos para fines de callerid).

Otros consejos

Enfoque rápido no probado (los números de teléfono AFAIK 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?...
}

Entonces solo llamas a estas funciones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top