Java 预测/识别电话号码的国家代码

Java 预测/识别电话号码的国家代码,java,android,phone-number,libphonenumber,mobile-country-code,Java,Android,Phone Number,Libphonenumber,Mobile Country Code,我有来自不同国家的Android联系人手机号码列表。有些联系人有国家代码,有些则没有 因此,解决方案可以是: 获取世界上所有受支持的国家/地区代码 用所有国家/地区代码循环一个数字 检查号码的有效性 这可能是预测受支持国家数量的一种方法。我想知道是否有更好的方法来解决这个问题?PhoneNumberUtil phoneUtil=PhoneNumberUtil.getInstance(); PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstanc

我有来自不同国家的Android联系人手机号码列表。有些联系人有国家代码,有些则没有

因此,解决方案可以是:

  • 获取世界上所有受支持的国家/地区代码
  • 用所有国家/地区代码循环一个数字
  • 检查号码的有效性
  • 这可能是预测受支持国家数量的一种方法。我想知道是否有更好的方法来解决这个问题?

    PhoneNumberUtil phoneUtil=PhoneNumberUtil.getInstance();
    
    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
    
    String numberStr = "04157012311";
    Set<String> allRegions = phoneUtil.getSupportedRegions();
    Set<String> validRegions = new LinkedHashSet<String>();
    
    for (String region : allRegions) {
      try {
        if (phoneUtil.isValid(phoneUtil.parse(numberStr, region))) {
          validRegions.add(region);
        }        
      } catch (NumberParseException e) {
        // Handle NumberParseException
      }
    }
    
    字符串编号str=“0415701231”; 设置allRegions=phoneUtil.getSupportedRegions(); Set validRegions=新建LinkedHashSet(); 用于(字符串区域:所有区域){ 试一试{ if(phoneUtil.isValid(phoneUtil.parse(numberStr,region))){ validRegions.add(地区); } }捕获(编号ParseException e){ //句柄号ParseException } }

    validRegions
    将包含您的电话号码所在地区的ISO代码

    如果可能的话,我会感到惊讶。我希望在许多国家,同一个号码可以作为一个电话号码。你是对的,但我相信每个国家可能有不同的频谱定义。e、 g.01760179。。。在德国和其他国家的类似差异可能导致识别此类号码的国家代码。感谢@0x60分享。这似乎是一个可能的解决方案,但理论上可以有许多有效的数字。我想知道这是唯一的解决办法还是有更好的方法。。。