2013-11-24 97 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