2013-11-24 96 views
0

我目前正在從一個應用程序黑名單來自特定國家的短信,我已經創建了我的BroadcastReceiver類,它啓動了一個服務,將電話號碼與存儲在數據庫中的電話號碼進行比較。 我的數據庫包含移動國家代碼,我想將收到的國家代碼與數據庫中的代碼進行比較,但遺憾的是我沒有找到任何方法從數字中檢索國家代碼。我認爲我可以用一個簡單的子字符串調用來檢索它,但是我注意到並非所有的國家代碼都是相同的長度,所以我不能這樣做。 我想知道前綴是否是唯一的(也就是說,如果一個前綴可能是另一個前綴),如果不是,那麼我可以從最大大小的前綴開始,然後是更短的前綴等等嗎? 你能給我一個關於如何做到這一點的提示嗎?Android SmsMessage國家代碼

謝謝

+0

你能不只是把後綴拿出來嗎?我認爲所有的電話號碼都是八位數字,這會使國家代碼留在字符串中。 – cYrixmorten

+0

並不是所有的數字都是高數位。 – ex0ns

回答

2

電話號碼規則相當複雜,有很多特殊情況。爲了可靠地提取國家代碼,我建議使用專門的庫。有來自谷歌著名的圖書館,稱爲libphonenumber:

https://code.google.com/p/libphonenumber/

看看從PhoneNumberUtil extractCountryCode方法,或PhoneNumberUtil.parse它返回一個PhoneNumber對象上,您可以撥打getCountryCode。

它是開源的,所以,或者,如果你不想混淆額外的庫,你可以看看它的實現提示如何自己處理國家代碼。

+1

謝謝extractCountryCode真的很有幫助,我很開心,因爲我創建了一個看起來完全一樣的函數。 – ex0ns