11

2 つの電話番号を比較して、同じ送信者/受信者からのものかどうかを判断する必要があります。ユーザーが連絡先にメッセージを送信し、その連絡先が返信する場合があります。

返信は通常、 +[country-code][area-code-if-any][and-then-the-actual-number]形式で行われます。たとえば +94 71 2593276、スリランカの電話番号の場合。

また、ユーザーがメッセージを送信0712593276するときは、通常、(上記の例の場合) の形式で入力します (彼もスリランカにいると仮定します)。

だから私が必要なのは、これら2つの数字が同じかどうかを確認する必要があるということです. このアプリは国際的に使用されます。したがって、最初の 2 桁を 0 に置き換えることはできません (そうすると、米国のような国では問題になります)。Java または Android 固有の方法でこれを行う方法はありますか?

ありがとう。

4

4 に答える 4

19

Android has nice PhoneNumberUtils, and i guess your looking for :

    public static boolean compare (String a, String b)

look in : http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html

using it should look like this :

String phone1   
String phone2 

 if (PhoneNumberUtils.compare(phone1, phone2)) {
    //they are the same do whatever you want!
   }
于 2013-02-03T13:10:24.737 に答える
11

android.telephony.PhoneNumberUtilsクラスは、電話番号と標準を扱うために必要なほぼすべての機能を提供します。

あなたの場合、解決策はor elseです。前者はリソースをチェックして、厳密な比較アルゴリズムを使用するか緩い比較アルゴリズムを使用するかを決定します。したがって、ほとんどの場合、より良い選択です。PhoneNumberUtils.compare(Context context, String number1, String number2)PhoneNumberUtils.compare(String number1, String number2)

PhoneNumberUtils.compare("0712593276", "+94712593276") // always true
PhoneNumberUtils.compare("0712593276", "+44712593276") // always true

// true or false depends on the context
PhoneNumberUtils.compare(context, "0712593276", "+94712593276") 

公式ドキュメントを見てください。そしてソースコード

于 2016-08-06T23:15:55.743 に答える
3

番号が受信者の番号の部分文字列であるかどうかを確認するのはどうですか?

たとえば、私のブラジルの番号が 888-777-666 で、あなたの番号が 111-222-333 だとします。ここからあなたに電話するには、国際電話をかけるために追加の番号をダイヤルする必要があります。9999 + your_number を追加する必要があるとします。結果は 9999111222333 になります。

RawNumber.substring(your_number)戻ってきたらtrue、あなたに電話していると言えます。

于 2012-09-05T14:37:20.130 に答える
-1

ロジックを適用して () と - を削除し、PhoneNumberUtils に従います。

于 2016-06-25T21:38:13.143 に答える