9

電話番号は、着信またはSMSメッセージから取得できます。残念ながら、SMSの場合、国コードが含まれている可能性があります。したがって、基本的には、連絡先の既存の番号と比較するために、国コードなしの単純な電話番号を取得する必要があります。

4

2 に答える 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 に答える