2015-05-14 12 views
7

Cihazdaki tüm telefon numaralarını E164 formatına çevirmek istiyorum. Yani, aşağıdaki kaynakta kullandım. Telefon numarasının Android'de E164 formatına formatlanması

libphonenumber

Yani burada böyle kullandım.

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

Ve bu kitaplığın 4.0'dan beri Android çerçevesi tarafından kullanıldığını okudum.

Java sürümü, akıllı telefonlarda çalışmak için en iyi duruma getirilmiştir ve 4.0 (Ice Cream Sandwich) sürümünden bu yana Android çerçevesi tarafından kullanılmaktadır.

Bunu Android SDK'dan kullanmak istiyorum. Ben de bunu buldum. Android SDK, bu PhoneNumberUtils ürününü sağlar.

Ve bir işlev

formatNumberToE164 (Dize phoneNumber, dize defaultCountryIso)

Kullanımı gerçekten çok kolay yoktur. Ancak bu işlevin API düzeyi 21'dir.

Sorularım ... Telefon Numaralarını API Düzey 14 (ICS) ~ 21 altında E164'e dönüştürmek için PhoneNumberUtils'i nasıl kullanabilirim?

Teşekkürler!

cevap

6

Sorun şu anki aygıtlarda yok PhoneNumberUtils.formatNumberToE164(...) boştur ve PhoneNumberUtils'inki aynı işi yapan başka bir şey yok.

Ben PhoneNumberUtils kullanarak öneririm zaman örneğin, mevcut ve eski cihazlarda 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; 
}