2

当我通过号码(+972573481112”)和国家代码(“IL”)时,我得到国家代码值 972 但我只想传递号码并获得任何国家代码值。

我不想通过“IL”。而且我只想为手机接听电话而这样做。有没有可能?如果可能的话,请尽快回复,谢谢。

String number = "+972579481112";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
   PhoneNumber pNumber = phoneUtil.parse(number, "IL");
        Log.v("Number ",pNumber.getCountryCode());
} catch (NumberParseException e) {
    e.printStackTrace();
}

我收到的电话如下:+972579481112

972579481112

+0579481112

0579481112

这是我的带有核心 java 文件的代码并添加 libphonenumber jar

公共课你好{

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

public static void main(String[] args) {
    String numbe = "9408135563";
    for (int i = 0; i < countrycode.length; i++) {
        if (numbe.startsWith("+"+countryval[i])) {
            System.out.println(countrycode[i]);
            PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
            try {
                PhoneNumber pNumber = phoneUtil.parse(numbe, countrycode[i]);
                System.out.println("code  "+pNumber.getCountryCode()+"Number "+pNumber.getNationalNumber());
            } catch (NumberParseException e) {
                e.printStackTrace();
            }
        }else if(numbe.startsWith(countryval[i])){
            System.out.println(countrycode[i]);
            PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
            try {
                PhoneNumber pNumber = phoneUtil.parse(numbe, countrycode[i]);
                System.out.println("code  "+pNumber.getCountryCode()+"Number "+pNumber.getNationalNumber());
            } catch (NumberParseException e) {
                e.printStackTrace();
            }
        }else if(numbe.startsWith("0")){
            System.out.println("code  "+numbe.substring(0,1)+"Number "+numbe.substring(1));
        }else if(numbe.startsWith("+0")){
            System.out.println("code  "+numbe.substring(0,2)+"Number "+numbe.substring(2));
        }
    }
}

}

4

1 回答 1

0

我知道的唯一方法是您需要随身携带国家/地区代码列表,并使用收到的电话号码检查代码,即:

phoneNumber.startsWith(countryCode);

编辑:

如果确认电话号码中的位数,您可以采用另一种方法。我的意思是说,如果您知道电话号码将始终包含 10 位数的手机号码,那么您始终可以通过从索引 0 到(电话号码的长度 - 10)的电话号码中获取子字符串来获取国家/地区代码。

于 2012-10-30T06:10:15.197 回答