Lee*_*min 7 android number-formatting phonenumberutils
我想将每个电话号码从设备转换为E164格式.所以,我在下面使用了opensource.
所以我就像这里一样使用它.
Phonenumber.PhoneNumber formattedNumber = null;
String formatted = null;
try {
formattedNumber = phoneUtil.parse(phoneNumber, "KR");
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;
}
Run Code Online (Sandbox Code Playgroud)
我读到这个库自4.0以来一直被Android框架使用.
Java版本针对在智能手机上运行进行了优化,并且自4.0以来由Android框架使用(Ice Cream Sandwich).
我想从Android SDK中使用它.所以我找到了这个.Android SDK提供此PhoneNumberUtils .
并且有一个功能
formatNumberToE164(String phoneNumber,String defaultCountryIso)
它真的很容易使用.但此功能的API级别为21.
所以我的问题是..如何在API Level 14(ICS)~21下使用PhoneNumberUtils将phonenumber转换为E164?
谢谢.!
问题是PhoneNumberUtils.formatNumberToE164(...)在旧设备上不可用,并且PhoneNumberUtils中没有其他任何东西可以执行相同的工作.
我建议在可用时使用PhoneNumberUtils,在旧设备上使用libphonenumber,例如:
public String formatE164Number(String countryCode, String phNum) {
String e164Number;
if (TextUtils.isEmpty(countryCode)) {
e164Number = phNum;
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
e164Number = PhoneNumberUtils.formatNumberToE164(phNum, countryCode);
} else {
try {
PhoneNumberUtil instance = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber phoneNumber = instance.parse(phNum, countryCode);
e164Number = instance.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.E164);
} catch (NumberParseException e) {
Log.e(TAG, "Caught: " + e.getMessage(), e);
e164Number = phNum;
}
}
}
return e164Number;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3930 次 |
| 最近记录: |