2011-07-25 17 views
8

Mogę uzyskać numer telefonu z połączenia przychodzącego lub wiadomości SMS. niestety w przypadku SMS-a może być w nim kod kraju. Zasadniczo potrzebuję uzyskać zwykły numer telefonu, bez kodu kraju, w celu porównania go z istniejącymi numerami w Kontaktach.Uzyskaj numer telefonu bez kodu kraju w Androidzie

Odpowiedz

25

Jeśli chcesz porównać numery telefonów zawsze można użyć

PhoneNumberUtils.compare(number1, number2); 

lub

PhoneNumberUtils.compare(context, number1, number2); 

Następnie nie musisz się martwić o kod kraju, wystarczy porównać numery z odwróconej kolejności i sprawdzić, czy pasują do siebie (wystarczy przynajmniej dla celów rozmówcy).

+0

To wydaje się działać wystarczająco dobrze dla mnie. Dziękuję za pomoc. – Alin

+0

fajne rozwiązanie to działa dobrze dla mnie – kathir

-1

fast niesprawdzone dojazdowe (numery telefonów AFAIK mieć 10 cyfr):

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

potem po prostu nazwać te funkcje

+6

Twoje rozwiązanie doskonale nadaje się do ustalania numeru telefonu. Niestety na całym świecie istnieją różne długości. – Alin

+1

To by nie działało wszędzie, ponieważ długość kodu kraju różni się od – Caner

+3

... aw niektórych krajach również długość numerów telefonów jest różna - zobacz przykłady z Wielkiej Brytanii. –

Powiązane problemy