2015-12-02 7 views
1

Я пытаюсь отформатировать любой номер телефона (локальный или международный) в стандартный формат E164, но методы в PhoneNumberUtils для большинства добавлены к уровням API 21 и новее, другие не имеют постоянного форматирования, обеспечивающего стандартный способ отображения гамбургеров, есть ли способ достичь этого, не используя какую-либо библиотеку?Преобразование номера телефона в формат E164 в API 14

ответ

0

Поскольку Android является открытым исходным кодом, вы можете просто импортировать самую последнюю версию PhoneNumberUtils себе: https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/PhoneNumberUtils.java

+0

Хорошо, но я делаю это, скопировав весь файл и включить его в моем проекте я новичок в андроид разработки, с я использую Android Studio 1.5 – Anas

0

Вы можете использовать библиотеку с открытым исходным кодом от Google 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; 
} 
Смежные вопросы