Question

Je peux obtenir le numéro de téléphone à partir d'un appel entrant ou d'un message sms. malheureusement, en cas de SMS il pourrait y avoir le code du pays en elle. Donc, au fond, je dois obtenir le numéro de téléphone ordinaire, sans code de pays, afin de le comparer avec les chiffres existants dans Contacts.

Était-ce utile?

La solution

Si vous voulez comparer les numéros de téléphone que vous pouvez toujours utiliser la balise

PhoneNumberUtils.compare(number1, number2);

ou

PhoneNumberUtils.compare(context, number1, number2);

Alors vous n'avez pas à vous soucier du code du pays, il suffit de comparer les chiffres de l'ordre et inverse voir si elles correspondent (assez à des fins CALLERID au moins).

Autres conseils

rapide approche non testé (numéros de téléphone à 10 chiffres ont afaik):

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

vous suffit d'appeler ces fonctions

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top