2011-07-25 122 views
8

我可以從來電或短信中獲取電話號碼。不幸的是,在SMS的情況下,可能會有國家代碼。所以,基本上我需要獲得沒有國家代碼的普通電話號碼,以便將其與聯繫人中的現有號碼進行比較。獲取Android中沒有國家代碼的電話號碼

回答

25

如果要比較的電話號碼,你可以隨時使用

PhoneNumberUtils.compare(number1, number2); 

PhoneNumberUtils.compare(context, number1, number2); 

然後,您不必擔心國家代碼,它只會比較相反順序的數字並查看它們是否匹配(足以滿足呼叫方ID的目的)。

+0

這似乎對我來說足夠好。感謝您的幫助。 – Alin

+0

很好的解決方案,這對我工作很好 – kathir

-1

快速未經測試方法(據我所知電話號碼有10位數字):

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

,那麼你只需要調用這些函數

+6

您的解決方案適用於固定電話號碼長度。不幸的是,世界各地都有不同的長度。 – Alin

+1

這種方法無處不在,因爲國家代碼長度與 – Caner

+3

不同,在某些國家,電話號碼的長度也不盡相同 - 請參閱英國的一些示例。 –

相關問題