如何使用Google的免费电话号码https://github.com/googlei18n/libphonenumber查看电话号码是加拿大或美国的电话号码,因为它们共享相同的国家/地区代码?
例如: + 1415-555-0123是美国旧金山 + 1647-555-0123是加拿大,多伦多
只需提供一个我需要获取国家/地区名称的电话号码。
当我尝试以下内容时,它返回“true”,而我的期望是它应该返回false,因为电话号码不是美国号码而是加拿大号码。
int (card b) <= FINISHED
答案 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号码非常有用。