我能够检测到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"
作为参数。但是我们不知道这个数字是否为我们所知,然后我们如何分析这个数字。
答案 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());
}