2011-07-25 125 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

不同,在某些国家,电话号码的长度也不尽相同 - 请参阅英国的一些示例。 –

相关问题