0

我目前正在考虑做这样的事情:

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

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

谢谢!

4

1 回答 1

4

最准确的方法是首先获取LocationManager. 然后,调用LocationManager.getLastKnownPosition。然后,创建一个 GeoCoder 并调用GeoCoder.getFromLocation. 这样做是一个单独的线程!这将为您提供Address对象列表。打电话给Address.getCountryName你。

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

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

另一种方法是使用用户语言环境:

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

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

于 2013-01-06T14:19:19.867 回答