Domanda

posso ottenere il numero di telefono da una chiamata o da un messaggio sms. purtroppo, nel caso degli SMS ci potrebbe essere il codice del paese in esso. Quindi, in sostanza ho bisogno per ottenere il numero di telefono semplice, senza codice del paese, al fine di confrontarlo con i numeri esistente in Contatti.

È stato utile?

Soluzione

Se si desidera confrontare i numeri di telefono si può sempre utilizzare il

PhoneNumberUtils.compare(number1, number2);

o

PhoneNumberUtils.compare(context, number1, number2);

Quindi non c'è bisogno di preoccuparsi il codice del paese, sarà solo confrontare i numeri da l'ordine inverso e vedere se corrispondono (abbastanza per scopi CallerID almeno).

Altri suggerimenti

veloce approccio non testati (numeri di telefono AFAIK hanno 10 cifre):

// 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?...
}

poi basta chiamare queste funzioni

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top