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 help someone