我想知道我是否可以在 android 中获得ISO_3166-1 数字样式的 sim 国家代码。
我可以得到 2 个字母的国家 ISO,如下所示:
TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2=manager.getSimCountryIso();
我想知道我是否可以在 android 中获得ISO_3166-1 数字样式的 sim 国家代码。
我可以得到 2 个字母的国家 ISO,如下所示:
TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2=manager.getSimCountryIso();
试试这个代码,
TelephonyManager manager = (TelephonyManager)getActivity().getSystemService(getActivity().TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country();
您可以使用以下Locale
类获取此信息:
TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country()
建议的解决方案使用Locale
返回 ISO 3166-1 alpha 3 代码,而不是 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();