有没有一种简单的方法来检索 ISO 3166-1 数字国家代码
Posted
技术标签:
【中文标题】有没有一种简单的方法来检索 ISO 3166-1 数字国家代码【英文标题】:Is there an easy way to retrieve the ISO_3166-1_numeric country codes 【发布时间】:2013-08-03 02:37:46 【问题描述】:我想知道我是否可以在android中获得ISO_3166-1 numeric风格的sim国家代码。
我可以得到 2 个字母的国家 ISO 如下:
TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2=manager.getSimCountryIso();
【问题讨论】:
【参考方案1】:试试这个代码,
TelephonyManager manager = (TelephonyManager)getActivity().getSystemService(getActivity().TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country();
【讨论】:
【参考方案2】:您可以使用Locale
类获取此信息,如下所示:
TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country()
【讨论】:
【参考方案3】:使用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();
【讨论】:
以上是关于有没有一种简单的方法来检索 ISO 3166-1 数字国家代码的主要内容,如果未能解决你的问题,请参考以下文章
世界货币查找表 - 使用 ISO 3166-1 alpha-2 代码?
ruby ISO_3166-1国家代码2 char到3 char映射