我意识到这是一个两步的过程:
第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 为假,因为 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) {}
}
}