数字を比較する目的で、国コードなしで電話番号を取得する
-
25-10-2019 - |
質問
着信コールまたは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?...
}
次に、これらの関数を呼び出します
所属していません StackOverflow