Intereting Posts
Тень панели инструментов в строке состояния для Lollipop Как играть в mp3-файл в необработанной папке в качестве уведомления об уведомлении в андроиде Синхронизация проекта Android Gradle завершилась неудачно из-за целевой версии Является ли Parse.com подходящей услугой для резервного копирования / синхронизации с SQLite в Android? Как интегрировать paypal пожертвовать в Android-приложение? Как передать параметр в подкласс BroadcastReceiver? Android-эмулятор настолько медленный, что он непригоден Состояние цвета фона CardView не соблюдается Автоматически регистрировать события жизненного цикла Android с помощью ActivityLifecycleCallbacks? Ошибка Logcat: «addView (View, LayoutParams) не поддерживается в AdapterView» в ListView Как отключить все события щелчка макета? Не удалось подключиться к службе Google Analytics Android Используя javascript в веб-обозревателе Android Студия Android не может найти указанный файл Android – добавьте фрагмент с настраиваемыми параметрами

Извлечение страны кода из номера телефона

У меня есть строка вроде этого: +33123456789 (французский номер телефона). Я хочу извлечь код страны (+33), не зная страны. Например, он должен работать, если у меня есть другой телефон из другой страны. Я использую библиотеку google https://code.google.com/p/libphonenumber/ .

Если я знаю страну, это круто, я могу найти код страны:

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); int countryCode = phoneUtil.getCountryCodeForRegion(locale.getCountry()); 

Но я не нахожу способ разобрать строку, чтобы не знать страну.

Solutions Collecting From Web of "Извлечение страны кода из номера телефона"

Хорошо, поэтому я присоединился к группе google libphonenumber ( https://groups.google.com/forum/?hl=ru&fromgroups#!forum/libphonenumber-discuss ), и я задал вопрос.

Мне не нужно указывать страну в параметре, если мой номер телефона начинается с «+». Вот пример:

 PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { // phone must begin with '+' PhoneNumber numberProto = phoneUtil.parse(phone, ""); int countryCode = numberProto.getCountryCode(); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } 

Здесь вы можете сохранить номер телефона в международном формате.

 internationalFormatPhoneNumber = phoneUtil.format(givenPhoneNumber, PhoneNumberFormat.INTERNATIONAL); 

Он возвращает номер телефона в качестве международного формата +94 71 560 4888

Так что теперь у меня есть код страны, как это

 String countryCode = internationalFormatPhoneNumber.substring(0,internationalFormatPhoneNumber.indexOf('')).replace('+', ' ').trim(); 

Надеюсь, что это поможет вам

Если строка, содержащая номер телефона, всегда будет запускаться таким образом (+33 или другой код страны), вы должны использовать регулярное выражение для разбора и получения кода страны, а затем использовать библиотеку, чтобы получить страну, связанную с номером.

Вот ответ, как найти код вызова страны без использования сторонних библиотек (как это делает настоящий разработчик):

Получить список всех доступных кодов стран, Wikipedia может помочь здесь: https://en.wikipedia.org/wiki/List_of_country_calling_codes

Разбирайте данные в древовидной структуре, где каждая цифра является ветвью.

Перемещайте свое дерево по цифре, пока вы не на последней ветке – это код вашей страны.