用于获取相同国家/地区代码的国家/地区名称的Google libphone号码

时间:2015-12-21 21:00:23

标签: java libphonenumber

如何使用Google的免费电话号码https://github.com/googlei18n/libphonenumber查看电话号码是加拿大或美国的电话号码,因为它们共享相同的国家/地区代码?

例如: + 1415-555-0123是美国旧金山 + 1647-555-0123是加拿大,多伦多

只需提供一个我需要获取国家/地区名称的电话号码。

当我尝试以下内容时,它返回“true”,而我的期望是它应该返回false,因为电话号码不是美国号码而是加拿大号码。

int (card b) <= FINISHED

2 个答案:

答案 0 :(得分:3)

我意识到这是一个两步过程:

步骤1 :(首先检查它是否是可能的数字)

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
boolean isPossible = phoneUtil.isPossibleNumber("+16475550123", "US");

步骤2 :(然后检查它是否对区域有效)

Phonenumber.PhoneNumber number = phoneUtil.parse("+16475550123", "US");
 isValid = phoneUtil.isValidNumberForRegion(number, "US");

// isValid为false,因为647不是美国区号。

我们可以这样:

String countries[] = {"US", "CA"};
String phoneNumber = "+13101234567";

for (String c : countries) {
            boolean isValid = phoneUtil.isPossibleNumber(phoneNumber, c);

            if (isValid) {
                try {
                    Phonenumber.PhoneNumber number = phoneUtil.parse(phoneNumber, c);
                    isValid = phoneUtil.isValidNumberForRegion(number, c);
                    if(isValid) {
                       System.out.println("Country is " + c);
                    }
                }catch(Exception e) {}
            }
        }

答案 1 :(得分:1)

您可能正在寻找PhoneNumberUtil.isValidNumberForRegion()。从它的文档中,它

  

测试电话号码是否对某个地区有效。请注意,这并不能验证数字是否实际在使用中,仅通过查看数字本身就无法判断。如果国家/地区呼叫代码与该地区的国家/地区呼叫代码不同,则会立即退出false。在此之后,检查该区域的特定数字模式规则。这对于确定某个特定号码是否对加拿大有效而不仅仅是有效的NANPA号码非常有用。