Как определить код страны в номере?

Нашел решение, брать код страны и соответственно нему подставлять +7, +380 и т.д.

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String code = telephonyManager.getSimCountryIso();

Но оно работает не на всех телефонах. На самсунге s8 возвращает null. Есть какой-то ещё способ определить код страны без gps?


Ответы (1 шт):

Автор решения: Sh4rx

Данный способ действительно иногда может работать не так как нужно, на различных устройствах и зависит от уровня API девайса, от типа сим-карты, и её наличия в устройстве.

Можете попробовать данную библиотеку. https://github.com/google/libphonenumber

Она позволяет определять страну по первым введенным цифрам номера телефона.

Как подключить её и как пользоваться подробно описано тут: https://medium.com/@youngam/android-how-to-detect-a-country-code-by-the-phone-number-30bacd606bbc

Либо можно написать свою реализацию, запихнув к примеру в хешмапу все 252 страны и соответствующие им номера.

→ Ссылка