1

我正在使用 libphonenumber jar(版本 7)并尝试在不设置 Region 的情况下解析电话号码。我按照推荐看到了以下代码。

PhoneNumber phoneNumber = phoneUtil.parse(numberStr, ""));

但是,这会引发 INVALID_COUNTRY_CODE 异常。最新版本有什么变化吗?如何获取给定号码(“+1-xxx-xxx-xxxx”)的区域代码(美国)?

4

1 回答 1

0

我使用了 libphonenumber 7.0.8 并且它有效:

public static void main(final String[] args) {
  String numberStr = "+1 650-253-0000"; // Google
  PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
  PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
  try {
    PhoneNumber phoneNumber = phoneUtil.parse(numberStr, null);
    System.out.println(geocoder.getDescriptionForNumber(phoneNumber, Locale.ENGLISH));
  } catch (NumberParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
}

它使用:

  • phoneUtil.parse(numberStr, null);
  • phoneUtil.parse(numberStr, "");
  • phoneUtil.parse(numberStr, "ZZ");

输出总是Mountain View, CA- 所以数字被成功解析。

javadoc中,您可以找到以下信息:

如果保证号码以“+”开头,后跟国家/地区呼叫代码,则可以提供“ZZ”或空值。

于 2015-07-31T19:54:47.353 回答