2013-01-11 214 views
19

我需要从国家代码中获取完整的国家/地区名称。 例如对于荷兰,我需要the Netherlands从国家代码NL从国家/地区代码获取国家/地区名称

我想我可以做到这一点与Locale像:

Locale loc = new Locale("NL"); 
loc.getCountry(); 

loc.getCountry();是空的。

有关如何做到这一点的任何想法,请? 在此先感谢!

+0

你可以从设备检查获得国家代码ISO本[getNetworkCountryIso()](http://developer.android.com/reference/android/电话/ TelephonyManager.html#getNetworkCountryIso()) – juned

+2

我不确定,但你可以使用loc.getDisplayCountry() –

+0

@ShreyaShah,它的工作原理就是这样! – noloman

回答

65

尝试这样

Locale loc = new Locale("","NL"); 
loc.getDisplayCountry(); 

希望这将助阵。

+1

Locale构造函数的上述单参数版本将第一个参数作为语言而不是国家代码。这在我的情况下不起作用。它应该是这样的,如果国家代码必须被使用。 Locale loc = new Locale(“”,“NL”); –

+0

这对我有用,我只是浪费了很多时间去思考Local(OneParam)出了什么问题......我的错我没有检查文档......但是感谢分享 – anoop4real

0

尝试使用其他构造

Locale loc = new Locale("NL", "The Netherlands"); 

Locale 似乎没有成为The Netherlands

+1

,但我不知道'NL'是'荷兰',实际上,这就是我想要的,'荷兰'来自'NL' :) – noloman

22

预定义的语言环境这应该工作:

Locale l = new Locale("", "NL"); 
String country = l.getDisplayCountry(); 

区域设置的第一个参数是语言,在你的情况下这是没用的。

+2

如果我这样做,它会检索'NL',所以它不是有效 – noloman

-2

为@ShreyaShah指出,该溶液是用loc.getDisplayCountry()

+8

这应该是一个评论! – Gridtestmail

0

一个完整的解决方案TelephonyManager(从this solution):

TelephonyManager teleMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String localeCountry = teleMgr.getNetworkCountryIso(); 
if (localeCountry != null) { 
    Locale loc = new Locale("",localeCountry); 
    Log.d(TAG, "User is from " + loc); 
} 
相关问题