javaandroidlibphonenumber

how to use libphonenumber in android studio to get country code


Basically I don't know how to use libphonenumber in android studio to get country code like(+91) I have tried and but it's giving me the first two letter of my input number.

    phoneUtil = PhoneNumberUtil.createInstance(Name.this);
    try {
        // phone must begin with '+'
        Phonenumber.PhoneNumber numberProto = phoneUtil.parse("+"+phone, null);
        countryCode= numberProto.getCountryCode();
    } catch (NumberParseException e) {
        System.err.println("NumberParseException was thrown: " + e.toString());
    }

Solution

  • this might be helpful for u

        public static String getMobileNoWithCode(String mobileNo) {
        try {
            List<Country> countries=Countries.getCountries();
            PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
            for (Country country :countries){
            Phonenumber.PhoneNumber phNumberProto = phoneUtil.parse(
                    mobileNo, country.getDCode());
            if (phoneUtil.isValidNumber(phNumberProto))
                return country.getDCode()+mobileNo;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    

    Countries.class

    public class Countries {
    
    private static final Country[] COUNTRIES = {
            new Country("AF", "Afghanistan", "+93", "AFN"),
            new Country("AX", "Aland Islands", "+358", "EUR"),
            new Country("AL", "Albania", "+355", "ALL"),
            new Country("DZ", "Algeria", "+213", "DZD"),
            new Country("AS", "American Samoa", "+1", "USD"),
            new Country("AD", "Andorra", "+376", "EUR"),
            new Country("AO", "Angola", "+244", "AOA"),
            new Country("AI", "Anguilla", "+1", "XCD"),
            new Country("AQ", "Antarctica", "+672", "USD"),
            new Country("AG", "Antigua and Barbuda", "+1", "XCD"),
            new Country("AR", "Argentina", "+54", "ARS"),
            new Country("AM", "Armenia", "+374", "AMD"),
            new Country("AW", "Aruba", "+297", "AWG"),
            new Country("AU", "Australia", "+61", "AUD"),
            new Country("AT", "Austria", "+43", "EUR"),
            new Country("AZ", "Azerbaijan", "+994", "AZN"),
            new Country("BS", "Bahamas", "+1", "BSD"),
            new Country("BH", "Bahrain", "+973", "BHD"),
            new Country("BD", "Bangladesh", "+880", "BDT"),
            new Country("BB", "Barbados", "+1", "BBD"),
            new Country("BY", "Belarus", "+375", "BYR"),
            new Country("BE", "Belgium", "+32", "EUR"),
            new Country("BZ", "Belize", "+501", "BZD"),
            new Country("BJ", "Benin", "+229", "XOF"),
            new Country("BM", "Bermuda", "+1", "BMD"),
            new Country("BT", "Bhutan", "+975", "BTN"),
            new Country("BO", "Bolivia, Plurinational State of", "+591", "BOB"),
            new Country("BA", "Bosnia and Herzegovina", "+387", "BAM"),
            new Country("BQ", "Bonaire", "+599", "USD"),
            new Country("BW", "Botswana", "+267", "BWP"),
            new Country("BV", "Bouvet Island", "+47", "NOK"),
            new Country("BR", "Brazil", "+55", "BRL"),
            new Country("IO", "British Indian Ocean Territory", "+246", "USD"),
            new Country("BN", "Brunei Darussalam", "+673", "BND"),
            new Country("BG", "Bulgaria", "+359", "BGN"),
            new Country("BF", "Burkina Faso", "+226", "XOF"),
            new Country("BI", "Burundi", "+257", "BIF"),
            new Country("KH", "Cambodia", "+855", "KHR"),
            new Country("CM", "Cameroon", "+237", "XAF"),
            new Country("CA", "Canada", "+1", "CAD"),
            new Country("CV", "Cape Verde", "+238", "CVE"),
            new Country("KY", "Cayman Islands", "+345", "KYD"),
            new Country("CF", "Central African Republic", "+236", "XAF"),
            new Country("TD", "Chad", "+235", "XAF"),
            new Country("CL", "Chile", "+56", "CLP"),
            new Country("CN", "China", "+86", "CNY"),
            new Country("CX", "Christmas Island", "+61", "AUD"),
            new Country("CC", "Cocos (Keeling) Islands", "+61", "AUD"),
            new Country("CO", "Colombia", "+57", "COP"),
            new Country("KM", "Comoros", "+269", "KMF"),
            new Country("CD", "Congo, The Democratic Republic of the", "+243", "CDF"),
            new Country("CG", "Congo", "+242", "XAF"),
            new Country("CK", "Cook Islands", "+682", "NZD"),
            new Country("CR", "Costa Rica", "+506", "CRC"),
            new Country("HR", "Croatia", "+385", "HRK"),
            new Country("CU", "Cuba", "+53", "CUP"),
            new Country("CW", "Curacao", "+599", "ANG"),
            new Country("CY", "Cyprus", "+357", "EUR"),
            new Country("CZ", "Czech Republic", "+420", "CZK"),
            new Country("DK", "Denmark", "+45", "DKK"),
            new Country("DJ", "Djibouti", "+253", "DJF"),
            new Country("DM", "Dominica", "+1", "XCD"),
            new Country("DO", "Dominican Republic", "+1", "DOP"),
            new Country("TL", "East Timor", "+670", "USD"),
            new Country("EC", "Ecuador", "+593", "USD"),
            new Country("EG", "Egypt", "+20", "EGP"),
            new Country("SV", "El Salvador", "+503", "SVC"),
            new Country("GQ", "Equatorial Guinea", "+240", "XAF"),
            new Country("ER", "Eritrea", "+291", "ERN"),
            new Country("EE", "Estonia", "+372", "EUR"),
            new Country("ET", "Ethiopia", "+251", "ETB"),
            new Country("FK", "Falkland Islands (Malvinas)", "+500", "FKP"),
            new Country("FO", "Faroe Islands", "+298", "DKK"),
            new Country("FJ", "Fiji", "+679", "FJD"),
            new Country("FI", "Finland", "+358", "EUR"),
            new Country("FR", "France", "+33", "EUR"),
            new Country("GF", "French Guiana", "+594", "EUR"),
            new Country("TF", "French Southern Territories", "+262", "EUR"),
            new Country("PF", "French Polynesia", "+689", "XPF"),
            new Country("GA", "Gabon", "+241", "XAF"),
            new Country("GM", "Gambia", "+220", "GMD"),
            new Country("GE", "Georgia", "+995", "GEL"),
            new Country("DE", "Germany", "+49", "EUR"),
            new Country("GH", "Ghana", "+233", "GHS"),
            new Country("GI", "Gibraltar", "+350", "GIP"),
            new Country("GR", "Greece", "+30", "EUR"),
            new Country("GL", "Greenland", "+299", "DKK"),
            new Country("GD", "Grenada", "+1", "XCD"),
            new Country("GP", "Guadeloupe", "+590", "EUR"),
            new Country("GU", "Guam", "+1", "USD"),
            new Country("GT", "Guatemala", "+502", "GTQ"),
            new Country("GG", "Guernsey", "+44", "GGP"),
            new Country("GN", "Guinea", "+224", "GNF"),
            new Country("GW", "Guinea-Bissau", "+245", "XOF"),
            new Country("GY", "Guyana", "+595", "GYD"),
            new Country("HT", "Haiti", "+509", "HTG"),
            new Country("HM", "Heard Island and McDonald Islands", "+000", "AUD"),
            new Country("VA", "Holy See (Vatican City State)", "+379", "EUR"),
            new Country("HN", "Honduras", "+504", "HNL"),
            new Country("HK", "Hong Kong", "+852", "HKD"),
            new Country("HU", "Hungary", "+36", "HUF"),
            new Country("IS", "Iceland", "+354", "ISK"),
            Utils.getDefaultCountry(),
            new Country("ID", "Indonesia", "+62", "IDR"),
            new Country("IR", "Iran, Islamic Republic of", "+98", "IRR"),
            new Country("IQ", "Iraq", "+964", "IQD"),
            new Country("IE", "Ireland", "+353", "EUR"),
            new Country("IM", "Isle of Man", "+44", "GBP"),
            new Country("IL", "Israel", "+972", "ILS"),
            new Country("IT", "Italy", "+39", "EUR"),
            new Country("CI", "Ivory Coast", "+225", "XOF"),
            new Country("JM", "Jamaica", "+1", "JMD"),
            new Country("JP", "Japan", "+81", "JPY"),
            new Country("JE", "Jersey", "+44", "JEP"),
            new Country("JO", "Jordan", "+962", "JOD"),
            new Country("KZ", "Kazakhstan", "+7", "KZT"),
            new Country("KE", "Kenya", "+254", "KES"),
            new Country("KI", "Kiribati", "+686", "AUD"),
            new Country("XK", "Kosovo", "+383", "EUR"),
            new Country("KW", "Kuwait", "+965", "KWD"),
            new Country("KG", "Kyrgyzstan", "+996", "KGS"),
            new Country("LA", "Lao People's Democratic Republic", "+856", "LAK"),
            new Country("LV", "Latvia", "+371", "LVL"),
            new Country("LB", "Lebanon", "+961", "LBP"),
            new Country("LS", "Lesotho", "+266", "LSL"),
            new Country("LR", "Liberia", "+231", "LRD"),
            new Country("LY", "Libyan Arab Jamahiriya", "+218", "LYD"),
            new Country("LI", "Liechtenstein", "+423", "CHF"),
            new Country("LT", "Lithuania", "+370", "LTL"),
            new Country("LU", "Luxembourg", "+352", "EUR"),
            new Country("MO", "Macao", "+853", "MOP"),
            new Country("MK", "Macedonia, The Former Yugoslav Republic of", "+389",
                    "MKD"),
            new Country("MG", "Madagascar", "+261", "MGA"),
            new Country("MW", "Malawi", "+265", "MWK"),
            new Country("MY", "Malaysia", "+60", "MYR"),
            new Country("MV", "Maldives", "+960", "MVR"),
            new Country("ML", "Mali", "+223", "XOF"),
            new Country("MT", "Malta", "+356", "EUR"),
            new Country("MH", "Marshall Islands", "+692", "USD"),
            new Country("MQ", "Martinique", "+596", "EUR"),
            new Country("MR", "Mauritania", "+222", "MRO"),
            new Country("MU", "Mauritius", "+230", "MUR"),
            new Country("YT", "Mayotte", "+262", "EUR"),
            new Country("MX", "Mexico", "+52", "MXN"),
            new Country("FM", "Micronesia, Federated States of", "+691", "USD"),
            new Country("MD", "Moldova, Republic of", "+373", "MDL"),
            new Country("MC", "Monaco", "+377", "EUR"),
            new Country("MN", "Mongolia", "+976", "MNT"),
            new Country("ME", "Montenegro", "+382", "EUR"),
            new Country("MS", "Montserrat", "+1", "XCD"),
            new Country("MA", "Morocco", "+212", "MAD"),
            new Country("MZ", "Mozambique", "+258", "MZN"),
            new Country("MM", "Myanmar", "+95", "MMK"),
            new Country("NA", "Namibia", "+264", "NAD"),
            new Country("NR", "Nauru", "+674", "AUD"),
            new Country("NP", "Nepal", "+977", "NPR"),
            new Country("NL", "Netherlands", "+31", "EUR"),
            new Country("NC", "New Caledonia", "+687", "XPF"),
            new Country("NZ", "New Zealand", "+64", "NZD"),
            new Country("NI", "Nicaragua", "+505", "NIO"),
            new Country("NE", "Niger", "+227", "XOF"),
            new Country("NG", "Nigeria", "+234", "NGN"),
            new Country("NU", "Niue", "+683", "NZD"),
            new Country("NF", "Norfolk Island", "+672", "AUD"),
            new Country("MP", "Northern Mariana Islands", "+1", "USD"),
            new Country("KP", "North Korea", "+850", "KPW"),
            new Country("NO", "Norway", "+47", "NOK"),
            new Country("OM", "Oman", "+968", "OMR"),
            new Country("PK", "Pakistan", "+92", "PKR"),
            new Country("PW", "Palau", "+680", "USD"),
            new Country("PS", "Palestinian Territory, Occupied", "+970", "ILS"),
            new Country("PA", "Panama", "+507", "PAB"),
            new Country("PG", "Papua New Guinea", "+675", "PGK"),
            new Country("PY", "Paraguay", "+595", "PYG"),
            new Country("PE", "Peru", "+51", "PEN"),
            new Country("PH", "Philippines", "+63", "PHP"),
            new Country("PN", "Pitcairn", "+872", "NZD"),
            new Country("PL", "Poland", "+48", "PLN"),
            new Country("PT", "Portugal", "+351", "EUR"),
            new Country("PR", "Puerto Rico", "+1", "USD"),
            new Country("QA", "Qatar", "+974", "QAR"),
            new Country("RO", "Romania", "+40", "RON"),
            new Country("RU", "Russia", "+7", "RUB"),
            new Country("RW", "Rwanda", "+250", "RWF"),
            new Country("RE", "Reunion", "+262", "EUR"),
            new Country("BL", "Saint Barthelemy", "+590", "EUR"),
            new Country("SH", "Saint Helena, Ascension and Tristan Da Cunha", "+290",
                    "SHP"),
            new Country("KN", "Saint Kitts and Nevis", "+1", "XCD"),
            new Country("LC", "Saint Lucia", "+1", "XCD"),
            new Country("MF", "Saint Martin", "+590", "EUR"),
            new Country("PM", "Saint Pierre and Miquelon", "+508", "EUR"),
            new Country("VC", "Saint Vincent and the Grenadines", "+1", "XCD"),
            new Country("WS", "Samoa", "+685", "WST"),
            new Country("SM", "San Marino", "+378", "EUR"),
            new Country("ST", "Sao Tome and Principe", "+239", "STD"),
            new Country("SA", "Saudi Arabia", "+966", "SAR"),
            new Country("SN", "Senegal", "+221", "XOF"),
            new Country("RS", "Serbia", "+381", "RSD"),
            new Country("SC", "Seychelles", "+248", "SCR"),
            new Country("SL", "Sierra Leone", "+232", "SLL"),
            new Country("SG", "Singapore", "+65", "SGD"),
            new Country("SX", "Sint Maarten", "+1", "ANG"),
            new Country("SK", "Slovakia", "+421", "EUR"),
            new Country("SI", "Slovenia", "+386", "EUR"),
            new Country("SB", "Solomon Islands", "+677", "SBD"),
            new Country("SO", "Somalia", "+252", "SOS"),
            new Country("ZA", "South Africa", "+27", "ZAR"),
            new Country("SS", "South Sudan", "+211", "SSP"),
            new Country("GS", "South Georgia and the South Sandwich Islands", "+500",
                    "GBP"),
            new Country("KR", "South Korea", "+82", "KRW"),
            new Country("ES", "Spain", "+34", "EUR"),
            new Country("LK", "Sri Lanka", "+94", "LKR"),
            new Country("SD", "Sudan", "+249", "SDG"),
            new Country("SR", "Suriname", "+597", "SRD"),
            new Country("SJ", "Svalbard and Jan Mayen", "+47", "NOK"),
            new Country("SZ", "Swaziland", "+268", "SZL"),
            new Country("SE", "Sweden", "+46", "SEK"),
            new Country("CH", "Switzerland", "+41", "CHF"),
            new Country("SY", "Syrian Arab Republic", "+963", "SYP"),
            new Country("TW", "Taiwan", "+886", "TWD"),
            new Country("TJ", "Tajikistan", "+992", "TJS"),
            new Country("TZ", "Tanzania, United Republic of", "+255", "TZS"),
            new Country("TH", "Thailand", "+66", "THB"),
            new Country("TG", "Togo", "+228", "XOF"),
            new Country("TK", "Tokelau", "+690", "NZD"),
            new Country("TO", "Tonga", "+676", "TOP"),
            new Country("TT", "Trinidad and Tobago", "+1", "TTD"),
            new Country("TN", "Tunisia", "+216", "TND"),
            new Country("TR", "Turkey", "+90", "TRY"),
            new Country("TM", "Turkmenistan", "+993", "TMT"),
            new Country("TC", "Turks and Caicos Islands", "+1", "USD"),
            new Country("TV", "Tuvalu", "+688", "AUD"),
            new Country("UM", "U.S. Minor Outlying Islands", "+1", "USD"),
            new Country("UG", "Uganda", "+256", "UGX"),
            new Country("UA", "Ukraine", "+380", "UAH"),
            new Country("AE", "United Arab Emirates", "+971", "AED"),
            new Country("GB", "United Kingdom", "+44", "GBP"),
            new Country("US", "United States", "+1", "USD"),
            new Country("UY", "Uruguay", "+598", "UYU"),
            new Country("UZ", "Uzbekistan", "+998", "UZS"),
            new Country("VU", "Vanuatu", "+678", "VUV"),
            new Country("VE", "Venezuela, Bolivarian Republic of", "+58", "VEF"),
            new Country("VN", "Vietnam", "+84", "VND"),
            new Country("VG", "Virgin Islands, British", "+1", "USD"),
            new Country("VI", "Virgin Islands, U.S.", "+1", "USD"),
            new Country("WF", "Wallis and Futuna", "+681", "XPF"),
            new Country("EH", "Western Sahara", "+212", "MAD"),
            new Country("YE", "Yemen", "+967", "YER"),
            new Country("ZM", "Zambia", "+260", "ZMW"),
            new Country("ZW", "Zimbabwe", "+263", "USD"),
    
    };
    
    public static List<Country> getCountries() {
        return new ArrayList<>(Arrays.asList(COUNTRIES));
    }}
    

    Country.class

    public class Country implements Parcelable {
    
    public static final Creator<Country> CREATOR = new Creator<Country>() {
        @Override
        public Country createFromParcel(Parcel in) {
            return new Country(in);
        }
    
        @Override
        public Country[] newArray(int size) {
            return new Country[size];
        }
    };
    private String name;
    private String code;
    @SerializedName("dial_code")
    private String dCode;
    
    public Country(String code, String name, String dCode, String eur) {
        this.code = code;
        this.name = name;
        this.dCode = dCode;
    }
    
    private Country(Parcel in) {
        name = in.readString();
        code = in.readString();
        dCode = in.readString();
    }
    
    public String getName() {
        return name;
    }
    
    public String getCode() {
        return code;
    }
    
    public String getDCode() {
        return dCode;
    }
    
    @Override
    public int describeContents() {
        return 0;
    }
    
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeString(code);
        dest.writeString(dCode);
    }}