0

我目前正在开发一个将来自特定国家/地区的短信列入黑名单的应用程序,我已经创建了我的 BroadcastReceiver 类,它启动了一项服务来将电话号码与存储在数据库中的电话号码进行比较。我的数据库包含移动国家代码,我想将收到的国家代码与数据库中的国家代码进行比较,不幸的是我没有找到任何方法从号码中检索国家代码。我以为我可以通过简单的子字符串调用来检索它,但我注意到并非所有国家代码的长度都相同,所以我不能那样做。我想知道前缀是否是唯一的(也就是说,如果一个前缀可以是另一个的前缀),如果不是,那么我可以先采用最大大小的前缀,然后是一个较短的前缀等等吗?你能给我一个关于如何做到这一点的提示吗?

谢谢

4

1 回答 1

2

电话号码规则比较复杂,有很多特殊情况。为了可靠地提取国家代码,我建议使用专门的库。谷歌有一个著名的库,叫做 libphonenumber:

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

查看PhoneNumberUtil 中的extractCountryCode 方法或PhoneNumberUtil.parse,它返回一个PhoneNumber 对象,您可以在该对象上调用getCountryCode。

它是开源的,因此,或者,如果您不想弄乱其他库,您可以查看它的实现以获取有关如何自己处理国家代码的提示。

于 2013-11-24T17:11:03.763 回答