我正在开发一个应用程序来阻止来自特定国家/地区的短信,我已经创建了我的BroadcastReceiver类,它启动一项服务来比较电话号码和存储在数据库中的电话号码。 我的数据库包含移动国家/地区代码,我想将收到的国家/地区代码与数据库中的代码进行比较,遗憾的是我没有找到任何方法从数字中检索国家/地区代码。我以为我可以通过一个简单的子串调用来检索它,但我注意到并非所有的国家代码都是相同的长度,所以我不能这样做。 我想知道前缀是否是唯一的(也就是说前缀可能是另一个的前缀),如果不是,那么我可以从最大大小前缀开始,然后是更短的前缀等等吗? 你能否告诉我如何做到这一点?
谢谢
答案 0 :(得分:2)
电话号码规则相当复杂,有许多特殊情况。为了可靠地提取国家代码,我建议使用专门的库。谷歌有一个着名的图书馆名为libphonenumber:
https://code.google.com/p/libphonenumber/
查看PhoneNumberUtil中的extractCountryCode方法,或者PhoneNumberUtil.parse,它返回一个可以调用getCountryCode的PhoneNumber对象。
它是开源的,所以,或者,如果您不想搞乱其他库,您可以查看其实现,以获取有关如何自己处理国家/地区代码的提示。