Obtenez le numéro de téléphone sans code de pays dans le but de comparer les chiffres
-
25-10-2019 - |
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.
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