Android - 确定用户所在国家/地区的最可靠方法是什么

时间:2013-01-06 14:14:01

标签: android

我目前正在做类似的事情:

    TelephonyManager teleMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    if (teleMgr != null)
    {
       String countryISOCode = teleMgr.getSimCountryIso();
       ...

但我不知道所有国家是否都遵守这个和getSimCountryIso();功能适用于所有手机。这是可靠的100%还是99%...或者是另一种告诉用户更可靠的方式?

谢谢!

1 个答案:

答案 0 :(得分:4)

最准确的方法是首先获得LocationManager。然后,致电LocationManager.getLastKnownPosition。然后,创建一个GeoCoder并调用GeoCoder.getFromLocation。这是一个单独的线程!!这将为您提供Address个对象的列表。致电Address.getCountryName,你就明白了。

请记住,最后一个已知位置可能有点陈旧,因此如果用户刚刚越过边界,您可能暂时不知道它。

如果用户使用国际漫游,您当前使用的SIM卡方法将返回错误的国家/地区。

另一种方法是使用用户区域设置:

String locale = context.getResources().getConfiguration().locale.getDisplayCountry();

但是,这将根据语言首选项返回一个国家/地区,并且对于Android中没有语言环境的地方不准确(例如,瑞士的用户可能将语言设置为德语或法语,导致国家不正确。