1

我想知道我是否可以在 android 中获得ISO_3166-1 数字样式的 sim 国家代码。

我可以得到 2 个字母的国家 ISO,如下所示:

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

String ISO2=manager.getSimCountryIso();
4

3 回答 3

3

试试这个代码,

TelephonyManager manager = (TelephonyManager)getActivity().getSystemService(getActivity().TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country();
于 2016-04-27T11:31:59.323 回答
0

您可以使用以下Locale类获取此信息:

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

String ISO2 = manager.getSimCountryIso();

String ISO3 = new Locale("", ISO2).getISO3Country()
于 2013-11-13T08:33:17.240 回答
0

建议的解决方案使用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();
于 2020-12-17T21:50:24.827 回答