我正在尝试将任何电话号码(本地或国际)格式化为标准的E164格式,但是PhoneNumberUtils中的方法最多是添加到API级别21和更新,其他方法没有持久格式化确保标准方式显示nbumbers,有没有办法实现这一点,而不使用任何库?
答案 0 :(得分:1)
您可以使用Google的开源库libphonenumber来转换您的电话号码。事实上,PhoneNumberUtils使用相同的库。
但是,图书馆需要ISO 3166-1双字母国家/地区代码,您可以使用网络语言作为默认国家/地区代码,可以使用getNetworkCountryIso。 您可以使用以下代码:
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber formattedNumber = null;
String formatted = null;
try {
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = manager.getNetworkCountryIso();
formattedNumber = phoneUtil.parse(phoneNumber, countryCode);
formatted = phoneUtil.format(formattedNumber,PhoneNumberUtil.PhoneNumberFormat.E164);
if (StringUtils.isEmpty(formatted) == false && formatted.length() > 0 && StringUtils.isEmpty(name) == false && name.length() > 0) {
listName.add(name);
listPhoneNumber.add(formatted);
}
} catch (NumberParseException e) {
continue;
}
答案 1 :(得分:0)
由于Android是开源的,您可以自行导入最新版本的PhoneNumberUtils
:https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/PhoneNumberUtils.java