【问题标题】:how to get country phone prefix from iso如何从iso获取国家电话前缀
【发布时间】:2012-06-02 02:14:46
【问题描述】:

我通过这个answer的代码得到了国家iso:

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();   

如何获取国家/地区的前缀电话号码?
例如 +972 表示 il。

【问题讨论】:

    标签: java android


    【解决方案1】:

    您可以使用由 Google 开发人员在 Github 上提供的名为 libphonenumber 的库。例如,您可以使用以下方式获取前缀:

    PhoneNumberUtil.getInstance().getCountryCodeForRegion("DE");
    

    它还有很多有用的功能来解析电话号码。

    【讨论】:

      【解决方案2】:

      我找到了一个可以在 csv 文件中获取映射的地方。 check here.

      另外,我将其更改为将国家代码转换为电话前缀的类。这里是:

      public class Iso2Phone {
      public static String getPhone(String code) {
          return country2phone.get(code.toUpperCase());
      }
      public static Map<String, String> getAll(){
          return country2phone;
      }
      private static Map<String, String> country2phone = new HashMap<String, String>();
      static {
          country2phone.put("AF", "+93");
          country2phone.put("AL", "+355");
          country2phone.put("DZ", "+213");
          country2phone.put("AD", "+376");
          country2phone.put("AO", "+244");
          country2phone.put("AG", "+1-268");
          country2phone.put("AR", "+54");
          country2phone.put("AM", "+374");
          country2phone.put("AU", "+61");
          country2phone.put("AT", "+43");
          country2phone.put("AZ", "+994");
          country2phone.put("BS", "+1-242");
          country2phone.put("BH", "+973");
          country2phone.put("BD", "+880");
          country2phone.put("BB", "+1-246");
          country2phone.put("BY", "+375");
          country2phone.put("BE", "+32");
          country2phone.put("BZ", "+501");
          country2phone.put("BJ", "+229");
          country2phone.put("BT", "+975");
          country2phone.put("BO", "+591");
          country2phone.put("BA", "+387");
          country2phone.put("BW", "+267");
          country2phone.put("BR", "+55");
          country2phone.put("BN", "+673");
          country2phone.put("BG", "+359");
          country2phone.put("BF", "+226");
          country2phone.put("BI", "+257");
          country2phone.put("KH", "+855");
          country2phone.put("CM", "+237");
          country2phone.put("CA", "+1");
          country2phone.put("CV", "+238");
          country2phone.put("CF", "+236");
          country2phone.put("TD", "+235");
          country2phone.put("CL", "+56");
          country2phone.put("CN", "+86");
          country2phone.put("CO", "+57");
          country2phone.put("KM", "+269");
          country2phone.put("CD", "+243");
          country2phone.put("CG", "+242");
          country2phone.put("CR", "+506");
          country2phone.put("CI", "+225");
          country2phone.put("HR", "+385");
          country2phone.put("CU", "+53");
          country2phone.put("CY", "+357");
          country2phone.put("CZ", "+420");
          country2phone.put("DK", "+45");
          country2phone.put("DJ", "+253");
          country2phone.put("DM", "+1-767");
          country2phone.put("DO", "+1-809and1-829");
          country2phone.put("EC", "+593");
          country2phone.put("EG", "+20");
          country2phone.put("SV", "+503");
          country2phone.put("GQ", "+240");
          country2phone.put("ER", "+291");
          country2phone.put("EE", "+372");
          country2phone.put("ET", "+251");
          country2phone.put("FJ", "+679");
          country2phone.put("FI", "+358");
          country2phone.put("FR", "+33");
          country2phone.put("GA", "+241");
          country2phone.put("GM", "+220");
          country2phone.put("GE", "+995");
          country2phone.put("DE", "+49");
          country2phone.put("GH", "+233");
          country2phone.put("GR", "+30");
          country2phone.put("GD", "+1-473");
          country2phone.put("GT", "+502");
          country2phone.put("GN", "+224");
          country2phone.put("GW", "+245");
          country2phone.put("GY", "+592");
          country2phone.put("HT", "+509");
          country2phone.put("HN", "+504");
          country2phone.put("HU", "+36");
          country2phone.put("IS", "+354");
          country2phone.put("IN", "+91");
          country2phone.put("ID", "+62");
          country2phone.put("IR", "+98");
          country2phone.put("IQ", "+964");
          country2phone.put("IE", "+353");
          country2phone.put("IL", "+972");
          country2phone.put("IT", "+39");
          country2phone.put("JM", "+1-876");
          country2phone.put("JP", "+81");
          country2phone.put("JO", "+962");
          country2phone.put("KZ", "+7");
          country2phone.put("KE", "+254");
          country2phone.put("KI", "+686");
          country2phone.put("KP", "+850");
          country2phone.put("KR", "+82");
          country2phone.put("KW", "+965");
          country2phone.put("KG", "+996");
          country2phone.put("LA", "+856");
          country2phone.put("LV", "+371");
          country2phone.put("LB", "+961");
          country2phone.put("LS", "+266");
          country2phone.put("LR", "+231");
          country2phone.put("LY", "+218");
          country2phone.put("LI", "+423");
          country2phone.put("LT", "+370");
          country2phone.put("LU", "+352");
          country2phone.put("MK", "+389");
          country2phone.put("MG", "+261");
          country2phone.put("MW", "+265");
          country2phone.put("MY", "+60");
          country2phone.put("MV", "+960");
          country2phone.put("ML", "+223");
          country2phone.put("MT", "+356");
          country2phone.put("MH", "+692");
          country2phone.put("MR", "+222");
          country2phone.put("MU", "+230");
          country2phone.put("MX", "+52");
          country2phone.put("FM", "+691");
          country2phone.put("MD", "+373");
          country2phone.put("MC", "+377");
          country2phone.put("MN", "+976");
          country2phone.put("ME", "+382");
          country2phone.put("MA", "+212");
          country2phone.put("MZ", "+258");
          country2phone.put("MM", "+95");
          country2phone.put("NA", "+264");
          country2phone.put("NR", "+674");
          country2phone.put("NP", "+977");
          country2phone.put("NL", "+31");
          country2phone.put("NZ", "+64");
          country2phone.put("NI", "+505");
          country2phone.put("NE", "+227");
          country2phone.put("NG", "+234");
          country2phone.put("NO", "+47");
          country2phone.put("OM", "+968");
          country2phone.put("PK", "+92");
          country2phone.put("PW", "+680");
          country2phone.put("PA", "+507");
          country2phone.put("PG", "+675");
          country2phone.put("PY", "+595");
          country2phone.put("PE", "+51");
          country2phone.put("PH", "+63");
          country2phone.put("PL", "+48");
          country2phone.put("PT", "+351");
          country2phone.put("QA", "+974");
          country2phone.put("RO", "+40");
          country2phone.put("RU", "+7");
          country2phone.put("RW", "+250");
          country2phone.put("KN", "+1-869");
          country2phone.put("LC", "+1-758");
          country2phone.put("VC", "+1-784");
          country2phone.put("WS", "+685");
          country2phone.put("SM", "+378");
          country2phone.put("ST", "+239");
          country2phone.put("SA", "+966");
          country2phone.put("SN", "+221");
          country2phone.put("RS", "+381");
          country2phone.put("SC", "+248");
          country2phone.put("SL", "+232");
          country2phone.put("SG", "+65");
          country2phone.put("SK", "+421");
          country2phone.put("SI", "+386");
          country2phone.put("SB", "+677");
          country2phone.put("SO", "+252");
          country2phone.put("ZA", "+27");
          country2phone.put("ES", "+34");
          country2phone.put("LK", "+94");
          country2phone.put("SD", "+249");
          country2phone.put("SR", "+597");
          country2phone.put("SZ", "+268");
          country2phone.put("SE", "+46");
          country2phone.put("CH", "+41");
          country2phone.put("SY", "+963");
          country2phone.put("TJ", "+992");
          country2phone.put("TZ", "+255");
          country2phone.put("TH", "+66");
          country2phone.put("TL", "+670");
          country2phone.put("TG", "+228");
          country2phone.put("TO", "+676");
          country2phone.put("TT", "+1-868");
          country2phone.put("TN", "+216");
          country2phone.put("TR", "+90");
          country2phone.put("TM", "+993");
          country2phone.put("TV", "+688");
          country2phone.put("UG", "+256");
          country2phone.put("UA", "+380");
          country2phone.put("AE", "+971");
          country2phone.put("GB", "+44");
          country2phone.put("US", "+1");
          country2phone.put("UY", "+598");
          country2phone.put("UZ", "+998");
          country2phone.put("VU", "+678");
          country2phone.put("VA", "+379");
          country2phone.put("VE", "+58");
          country2phone.put("VN", "+84");
          country2phone.put("YE", "+967");
          country2phone.put("ZM", "+260");
          country2phone.put("ZW", "+263");
          country2phone.put("GE", "+995");
          country2phone.put("TW", "+886");
          country2phone.put("AZ", "+374-97");
          country2phone.put("CY", "+90-392");
          country2phone.put("MD", "+373-533");
          country2phone.put("SO", "+252");
          country2phone.put("GE", "+995");
          country2phone.put("CX", "+61");
          country2phone.put("CC", "+61");
          country2phone.put("NF", "+672");
          country2phone.put("NC", "+687");
          country2phone.put("PF", "+689");
          country2phone.put("YT", "+262");
          country2phone.put("GP", "+590");
          country2phone.put("GP", "+590");
          country2phone.put("PM", "+508");
          country2phone.put("WF", "+681");
          country2phone.put("CK", "+682");
          country2phone.put("NU", "+683");
          country2phone.put("TK", "+690");
          country2phone.put("GG", "+44");
          country2phone.put("IM", "+44");
          country2phone.put("JE", "+44");
          country2phone.put("AI", "+1-264");
          country2phone.put("BM", "+1-441");
          country2phone.put("IO", "+246");
          country2phone.put("", "+357");
          country2phone.put("VG", "+1-284");
          country2phone.put("KY", "+1-345");
          country2phone.put("FK", "+500");
          country2phone.put("GI", "+350");
          country2phone.put("MS", "+1-664");
          country2phone.put("SH", "+290");
          country2phone.put("TC", "+1-649");
          country2phone.put("MP", "+1-670");
          country2phone.put("PR", "+1-787and1-939");
          country2phone.put("AS", "+1-684");
          country2phone.put("GU", "+1-671");
          country2phone.put("VI", "+1-340");
          country2phone.put("HK", "+852");
          country2phone.put("MO", "+853");
          country2phone.put("FO", "+298");
          country2phone.put("GL", "+299");
          country2phone.put("GF", "+594");
          country2phone.put("GP", "+590");
          country2phone.put("MQ", "+596");
          country2phone.put("RE", "+262");
          country2phone.put("AX", "+358-18");
          country2phone.put("AW", "+297");
          country2phone.put("AN", "+599");
          country2phone.put("SJ", "+47");
          country2phone.put("AC", "+247");
          country2phone.put("TA", "+290");
          country2phone.put("CS", "+381");
          country2phone.put("PS", "+970");
          country2phone.put("EH", "+212");
      }
      }
      

      【讨论】:

      • 可以做一些工作 - 大量重复的“AQ”空条目,“AU”被设置然后取消设置......
      • @Abhi - 我自己写的。
      • @DuncanMcGregor - 谢谢,我想我现在修复了这些条目。
      • 最好改这行:country2phone.put("", "+357");
      • 这条线可以吗? country2phone.put("DO", "+1-809and1-829"); 还有一些其他类似的问题也可能需要修复。
      【解决方案3】:

      整理@oshai 的回答

      public class CountryToPhonePrefix {
      
      private static Map<String, String> map = new HashMap<>();
      
      public String prefixFor(String iso2CountryCode) {
          String result = map.get(iso2CountryCode);
          if (result == null) {
              throw new IllegalArgumentException("Unknown country code " + iso2CountryCode);
          }
          return result;
      }
      
      static {
          map.put("AC", "+247");
          map.put("AD", "+376");
          map.put("AE", "+971");
          map.put("AF", "+93");
          map.put("AG", "+1-268");
          map.put("AI", "+1-264");
          map.put("AL", "+355");
          map.put("AM", "+374");
          map.put("AN", "+599");
          map.put("AO", "+244");
          map.put("AR", "+54");
          map.put("AS", "+1-684");
          map.put("AT", "+43");
          map.put("AU", "+61");
          map.put("AW", "+297");
          map.put("AX", "+358-18");
          map.put("AZ", "+374-97");
          map.put("AZ", "+994");
          map.put("BA", "+387");
          map.put("BB", "+1-246");
          map.put("BD", "+880");
          map.put("BE", "+32");
          map.put("BF", "+226");
          map.put("BG", "+359");
          map.put("BH", "+973");
          map.put("BI", "+257");
          map.put("BJ", "+229");
          map.put("BM", "+1-441");
          map.put("BN", "+673");
          map.put("BO", "+591");
          map.put("BR", "+55");
          map.put("BS", "+1-242");
          map.put("BT", "+975");
          map.put("BW", "+267");
          map.put("BY", "+375");
          map.put("BZ", "+501");
          map.put("CA", "+1");
          map.put("CC", "+61");
          map.put("CD", "+243");
          map.put("CF", "+236");
          map.put("CG", "+242");
          map.put("CH", "+41");
          map.put("CI", "+225");
          map.put("CK", "+682");
          map.put("CL", "+56");
          map.put("CM", "+237");
          map.put("CN", "+86");
          map.put("CO", "+57");
          map.put("CR", "+506");
          map.put("CS", "+381");
          map.put("CU", "+53");
          map.put("CV", "+238");
          map.put("CX", "+61");
          map.put("CY", "+90-392");
          map.put("CY", "+357");
          map.put("CZ", "+420");
          map.put("DE", "+49");
          map.put("DJ", "+253");
          map.put("DK", "+45");
          map.put("DM", "+1-767");
          map.put("DO", "+1-809"); // and 1-829?
          map.put("DZ", "+213");
          map.put("EC", "+593");
          map.put("EE", "+372");
          map.put("EG", "+20");
          map.put("EH", "+212");
          map.put("ER", "+291");
          map.put("ES", "+34");
          map.put("ET", "+251");
          map.put("FI", "+358");
          map.put("FJ", "+679");
          map.put("FK", "+500");
          map.put("FM", "+691");
          map.put("FO", "+298");
          map.put("FR", "+33");
          map.put("GA", "+241");
          map.put("GB", "+44");
          map.put("GD", "+1-473");
          map.put("GE", "+995");
          map.put("GF", "+594");
          map.put("GG", "+44");
          map.put("GH", "+233");
          map.put("GI", "+350");
          map.put("GL", "+299");
          map.put("GM", "+220");
          map.put("GN", "+224");
          map.put("GP", "+590");
          map.put("GQ", "+240");
          map.put("GR", "+30");
          map.put("GT", "+502");
          map.put("GU", "+1-671");
          map.put("GW", "+245");
          map.put("GY", "+592");
          map.put("HK", "+852");
          map.put("HN", "+504");
          map.put("HR", "+385");
          map.put("HT", "+509");
          map.put("HU", "+36");
          map.put("ID", "+62");
          map.put("IE", "+353");
          map.put("IL", "+972");
          map.put("IM", "+44");
          map.put("IN", "+91");
          map.put("IO", "+246");
          map.put("IQ", "+964");
          map.put("IR", "+98");
          map.put("IS", "+354");
          map.put("IT", "+39");
          map.put("JE", "+44");
          map.put("JM", "+1-876");
          map.put("JO", "+962");
          map.put("JP", "+81");
          map.put("KE", "+254");
          map.put("KG", "+996");
          map.put("KH", "+855");
          map.put("KI", "+686");
          map.put("KM", "+269");
          map.put("KN", "+1-869");
          map.put("KP", "+850");
          map.put("KR", "+82");
          map.put("KW", "+965");
          map.put("KY", "+1-345");
          map.put("KZ", "+7");
          map.put("LA", "+856");
          map.put("LB", "+961");
          map.put("LC", "+1-758");
          map.put("LI", "+423");
          map.put("LK", "+94");
          map.put("LR", "+231");
          map.put("LS", "+266");
          map.put("LT", "+370");
          map.put("LU", "+352");
          map.put("LV", "+371");
          map.put("LY", "+218");
          map.put("MA", "+212");
          map.put("MC", "+377");
          map.put("MD", "+373-533");
          map.put("MD", "+373");
          map.put("ME", "+382");
          map.put("MG", "+261");
          map.put("MH", "+692");
          map.put("MK", "+389");
          map.put("ML", "+223");
          map.put("MM", "+95");
          map.put("MN", "+976");
          map.put("MO", "+853");
          map.put("MP", "+1-670");
          map.put("MQ", "+596");
          map.put("MR", "+222");
          map.put("MS", "+1-664");
          map.put("MT", "+356");
          map.put("MU", "+230");
          map.put("MV", "+960");
          map.put("MW", "+265");
          map.put("MX", "+52");
          map.put("MY", "+60");
          map.put("MZ", "+258");
          map.put("NA", "+264");
          map.put("NC", "+687");
          map.put("NE", "+227");
          map.put("NF", "+672");
          map.put("NG", "+234");
          map.put("NI", "+505");
          map.put("NL", "+31");
          map.put("NO", "+47");
          map.put("NP", "+977");
          map.put("NR", "+674");
          map.put("NU", "+683");
          map.put("NZ", "+64");
          map.put("OM", "+968");
          map.put("PA", "+507");
          map.put("PE", "+51");
          map.put("PF", "+689");
          map.put("PG", "+675");
          map.put("PH", "+63");
          map.put("PK", "+92");
          map.put("PL", "+48");
          map.put("PM", "+508");
          map.put("PR", "+1-787"); // and 1-939 ?
          map.put("PS", "+970");
          map.put("PT", "+351");
          map.put("PW", "+680");
          map.put("PY", "+595");
          map.put("QA", "+974");
          map.put("RE", "+262");
          map.put("RO", "+40");
          map.put("RS", "+381");
          map.put("RU", "+7");
          map.put("RW", "+250");
          map.put("SA", "+966");
          map.put("SB", "+677");
          map.put("SC", "+248");
          map.put("SD", "+249");
          map.put("SE", "+46");
          map.put("SG", "+65");
          map.put("SH", "+290");
          map.put("SI", "+386");
          map.put("SJ", "+47");
          map.put("SK", "+421");
          map.put("SL", "+232");
          map.put("SM", "+378");
          map.put("SN", "+221");
          map.put("SO", "+252");
          map.put("SO", "+252");
          map.put("SR", "+597");
          map.put("ST", "+239");
          map.put("SV", "+503");
          map.put("SY", "+963");
          map.put("SZ", "+268");
          map.put("TA", "+290");
          map.put("TC", "+1-649");
          map.put("TD", "+235");
          map.put("TG", "+228");
          map.put("TH", "+66");
          map.put("TJ", "+992");
          map.put("TK", "+690");
          map.put("TL", "+670");
          map.put("TM", "+993");
          map.put("TN", "+216");
          map.put("TO", "+676");
          map.put("TR", "+90");
          map.put("TT", "+1-868");
          map.put("TV", "+688");
          map.put("TW", "+886");
          map.put("TZ", "+255");
          map.put("UA", "+380");
          map.put("UG", "+256");
          map.put("US", "+1");
          map.put("UY", "+598");
          map.put("UZ", "+998");
          map.put("VA", "+379");
          map.put("VC", "+1-784");
          map.put("VE", "+58");
          map.put("VG", "+1-284");
          map.put("VI", "+1-340");
          map.put("VN", "+84");
          map.put("VU", "+678");
          map.put("WF", "+681");
          map.put("WS", "+685");
          map.put("YE", "+967");
          map.put("YT", "+262");
          map.put("ZA", "+27");
          map.put("ZM", "+260");
          map.put("ZW", "+263");
      }}
      

      【讨论】:

        【解决方案4】:

        复制自Here

         /**
             * network iso code: referred and listed at:
             * http://en.wikipedia.org/wiki/List_of_mobile_country_codes
             */
              TelephonyManager manager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
            String DEVICE_COUNTRY = manager.getNetworkCountryIso();
        

        更新:: 复制自here

        String locale = getApplicationCOntext().getResources().getConfiguration().locale.getCountry();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-06-27
          • 2012-11-09
          • 1970-01-01
          • 2017-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多