我可以从来电或短信中获取电话号码。不幸的是,如果是 SMS,其中可能有国家代码。所以,基本上我需要获取没有国家代码的普通电话号码,以便将其与联系人中的现有号码进行比较。
问问题
10629 次
2 回答
31
如果您想比较电话号码,您可以随时使用
PhoneNumberUtils.compare(number1, number2);
或者
PhoneNumberUtils.compare(context, number1, number2);
然后您不必担心国家代码,它只会比较相反顺序的数字并查看它们是否匹配(至少对于 callerID 而言足够了)。
于 2011-07-25T10:08:37.033 回答
-1
未经测试的快速方法(AFAIK 电话号码有 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?...
}
那么你只需调用这些函数
于 2011-07-25T09:23:14.953 回答