有没有一种简单的方法来检索ISO_3166-1_numeric国家/地区代码

时间:2013-08-01 23:41:59

标签: android iso country-codes

我想知道我是否可以在android中获得ISO_3166-1 numeric样式的SIM国家/地区代码。

我可以按如下方式获得2个字母的国家ISO:

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

String ISO2=manager.getSimCountryIso();

3 个答案:

答案 0 :(得分:2)

试试这段代码,

TelephonyManager manager = (TelephonyManager)getActivity().getSystemService(getActivity().TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country();

答案 1 :(得分:0)

使用Locale提出的解决方案返回ISO 3166-1 alpha 3代码,而不是ISO 3166-1数字代码。我发现的解决方案使用的是以下库(在我们的特定情况下,鉴于它是Apache 2.0许可证,我们只是复制了CountryCode类,并对其进行了一些细微的修改以使其成为独立的):

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

(在以下answer中找到)。

然后,您的代码变为:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3_numeric = CountryCode.getByAlpha2Code(ISO2).getNumeric();

答案 2 :(得分:-1)

您可以使用Locale类获取此内容,如下所示:

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

String ISO2 = manager.getSimCountryIso();

String ISO3 = new Locale("", ISO2).getISO3Country()