2012-09-05 8 views
7

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

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

がメッセージをに送信した場合、彼は通常、上記の例のフォーマット0712593276(スリランカにいると仮定します)を入力します。

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

ありがとうございました。

+0

電話番号はすべての国に適用される単純な規則に従いません。各国の事例をコード化する必要があります。 –

+0

@PeterLawreyそれはちょっと極端なようです。:)しかし、それは可能でなければなりません。株式Androidのメッセージングアプリを考えてみてください。それは両方の方法でそれを入力するかどうか同じ番号かどうかを認識します。 – Roshnal

+0

私はそれがルックアップテーブルを持っていると思います。とにかく、このアプリのソースを読んだり、逆コンパイルしたりしていますか? –

答えて

2

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

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

RawNumber.substring(your_number)が返された場合、私はあなたに電話していると言えます。

-1

ちょうどあなたのロジックを適用()と - を削除してPhoneNumberUtilsに従います

5

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

解決方法は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") 

公式documentationを見てください。そして、source code