我可以从来电或SMS消息中获取电话号码。不幸的是,如果有SMS,则可能有国家代码。因此,基本上,我需要获取没有国家代码的普通电话号码,以将其与联系人中的现有号码进行比较。

有帮助吗?

解决方案

如果要比较电话号码,您可以随时使用

PhoneNumberUtils.compare(number1, number2);

或者

PhoneNumberUtils.compare(context, number1, number2);

然后,您不必担心国家代码,它将仅比较反向订单中的数字,并查看它们是否匹配(至少足以用于CallerID目的)。

其他提示

快速未经测试的方法(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?...
}

然后,您只称呼这些功能

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top