获取给定电话号码的详细国家/地区名称和国家/地区代码

时间:2017-09-13 16:46:18

标签: java android telephony country-codes libphonenumber

我能够检测到android中的来电,但问题是我想知道该电话号码的国家/地区代码,以便我可以分析它是国内号码还是国际号码。我知道libphonenumber 但它需要事先知道区域代码才能获得国家代码,如示例

所示
String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());
}

它已经知道将"CH"作为参数。但是我们不知道这个数字是否为我们所知,然后我们如何分析这个数字。

1 个答案:

答案 0 :(得分:2)

只要它不是区域号码(在这种情况下它只是一个普通的号码而且这个世界上没有lib可以确定它的来源),你可以指定"ZZ"null parse的第二个参数。

这是documentation所说的:

  

我们期待数量来自的地区。这只是使用   如果要解析的号码不是以国际格式写的。该   在这种情况下,数字的country_code将被存储为   提供的默认区域。如果保证数字开头   一个'+'后跟国家调用代码,然后“ZZ”或null可以   提供。

在您能够创建PhoneNumber的实例后,您只需拨打getRegionCodeForNumber,如下所示。

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
   PhoneNumber numberProto = phoneUtil.parse(swissNumberStr, "ZZ");
   System.out.println(phoneUtil.getRegionCodeForNumber(numberProto));
} catch (NumberParseException e) {
   System.err.println("NumberParseException was thrown: " + e.toString());
}