2012-09-05 48 views
7

我需要比較兩個電話號碼以確定它們是否來自同一個發件人/收件人。用戶可能會向聯繫人發送消息,並且該聯繫人可能會回覆。比較Android中的電話號碼

答覆通常在 +[country-code][area-code-if-any][and-then-the-actual-number]格式。例如, +94 71 2593276爲斯里蘭卡電話號碼。

而當用戶發送消息時,他通常會以格式(對於上述示例)0712593276(假設他也在斯里蘭卡)輸入格式。

所以我需要的是,我需要檢查這兩個數字是否相同。這個應用程序將在國際上使用。所以我不能用0代替前兩位數字(那麼對於像美國這樣的國家來說這將是一個問題)。有沒有什麼方法可以在Java或Android中專門做到這一點?

謝謝。

+0

電話號碼不遵循適用於每個國家的簡單規則。您需要爲每個國家編碼案例。 –

+0

@PeterLawrey這似乎有點極端.. :)但它應該是可能的。想想股票Android通訊應用程序。它會識別我們是否同時輸入它的相同數字。 – Roshnal

+0

我想它有一個查找表。無論如何讀取或反編譯這個應用程序的來源? –

回答

2

如何檢查數字是否是接收者號碼的子字符串?

例如,假設我的巴西號碼是888-777-666,您的號碼是111-222-333。 要撥打電話,從這裏開始,我需要撥打其他號碼撥打國際電話。假設我需要添加9999 + your_number,導致9999111222333.

如果RawNumber.substring(your_number)返回true我可以說我打電話給你。

-1

只適用你的邏輯

public static boolean compare (String a, String b) 

照照刪除()和 - 並按照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