2015-12-02 35 views
1

我試圖將任何電話號碼(本地或國際)格式化爲標準E164格式,但PhoneNumberUtils中的方法最多添加到API級別21和更新,其他人沒有持久化格式來確保顯示nbumbers的標準方式,是否有任何方法可以實現這一點,而不使用任何庫?在API 14中將電話號碼轉換爲E164格式

回答

0

您可以使用谷歌的開源庫libphonenumber轉換您的電話號碼。實際上PhoneNumberUtils使用相同的庫。

但是,該庫將需要ISO 3166-1兩字母國家代碼,您可以使用網絡語言作爲默認國家代碼,可使用getNetworkCountryIso。 您可以使用下面的代碼:

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; 
}