我想知道我是否可以在android中获得ISO_3166-1 numeric样式的SIM国家/地区代码。
我可以按如下方式获得2个字母的国家ISO:
TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2=manager.getSimCountryIso();
答案 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()