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

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

只要它不是区域号(在这种情况下它只是一个普通数字,并且这个世界中没有lib可以确定它来自何处),您可以为parse的第二个参数指定"ZZ"null

这是文档说的:

我们期待这个数字来自的地区。 仅在被解析的数字不是以国际格式写入时才使用。 在这种情况下,数字的country_code将被存储为提供的默认区域的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()); }