2015-05-14 14 views
7

Desidero convertire tutti i numeri di telefono da conatct nel dispositivo al formato E164. Quindi, ho usato opensource di seguito.Formattazione del numero di telefono nel formato E164 in Android

libphonenumber

così ho usato è come qui.

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

E ho letto che questa libreria è utilizzata dal framework Android dal 4.0.

La versione Java è ottimizzata per l'esecuzione su smartphone ed è utilizzata dal framework Android dal 4.0 (Ice Cream Sandwich).

Voglio utilizzare questo da Android SDK. Quindi ho trovato questo. Android SDK fornisce questo PhoneNumberUtils .

E c'è una funzione

formatNumberToE164 (String phoneNumber, String defaultCountryIso)

E 'davvero facile da usare. ma il livello API di questa funzione è 21.

Quindi la mia domanda è .. Come posso utilizzare PhoneNumberUtils per convertire il numero di telefono in E164 sotto Livello API 14 (ICS) ~ 21?

Grazie!

risposta

6

Il problema è PhoneNumberUtils.formatNumberToE164(...) non è disponibile su dispositivi precedenti e non c'è nient'altro in PhoneNumberUtils che fa lo stesso lavoro.

Io suggerirei usando PhoneNumberUtils quando disponibile e libphonenumber sui vecchi dispositivi, ad esempio:

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