Using libphonenumber
public String convertPhoneNumber(String phoneNumber, PhoneNumberUtil.PhoneNumberFormat format) { String resultNumber = ""; Phonenumber.PhoneNumber myNumberProto = null; PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); if (!phoneNumber.substring(0, 1).equals("+")) { try { myNumberProto = phoneUtil.parse(phoneNumber, Locale.getDefault().getCountry().toUpperCase()); resultNumber = phoneUtil.format(myNumberProto, format); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } } else { try { myNumberProto = phoneUtil.parse(phoneNumber, "ZZ"); resultNumber = phoneUtil.format(myNumberProto, format); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } } return resultNumber; } public String getRegionOfPhoneNumber(String callNumber) { PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); Phonenumber.PhoneNumber myNumberProto = null; callNumber = convertPhoneNumber(callNumber, PhoneNumberUtil.PhoneNumberFormat.E164); try { myNumberProto = phoneUtil.parse(callNumber, "ZZ"); } catch (NumberParseException e) { e.printStackTrace(); } String result = ""; if (myNumberProto != null) { result = phoneUtil.getRegionCodeForCountryCode(myNumberProto.getCountryCode()); } return result; } public String getCountryNameOfPhoneNumber(String callNumber) { String result = ""; String regionCode = getRegionOfPhoneNumber(callNumber); if (!regionCode.equals("")) { result = new Locale("", regionCode).getDisplayCountry(Locale.getDefault()); } return result; }
usage: getCountryNameOfPhoneNumber ("phone number");
Hope this helps someone
source share