Есть ли простой способ получить коды стран ISO_3166-1_numeric

Мне было интересно, могу ли я получить код страны sim в числовом стиле ISO_3166-1 в Android .

Я могу получить двухбуквенный ISO страны следующим образом:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);

String ISO2=manager.getSimCountryIso();

person Diego    schedule 01.08.2013    source источник


Ответы (3)


Попробуйте этот код,

TelephonyManager manager = (TelephonyManager)getActivity().getSystemService(getActivity().TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country();
person Monu Gupta    schedule 27.04.2016

Вы можете получить это, используя класс Locale следующим образом:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);

String ISO2 = manager.getSimCountryIso();

String ISO3 = new Locale("", ISO2).getISO3Country()
person Cassie    schedule 13.11.2013

Предлагаемые решения с использованием Locale возвращают 3 буквенно-буквенные коды ISO 3166-1, а не числовые коды ISO 3166-1. Решение, которое я нашел, заключалось в использовании следующей библиотеки (в нашем конкретном случае, учитывая лицензию Apache 2.0, мы просто скопировали класс CountryCode с некоторыми небольшими изменениями, чтобы сделать его автономным):

https://github.com/TakahikoKawasaki/nv-i18n

(находится в следующем ответе).

Тогда ваш код станет:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3_numeric = CountryCode.getByAlpha2Code(ISO2).getNumeric();
person Xavier Rubio Jansana    schedule 17.12.2020