如何在Android上获取用户的国家/地区代码?

时间:2011-08-31 02:12:20

标签: java android localization geolocation

如何在Android上检索用户的国家/地区代码?我需要权限吗?

4 个答案:

答案 0 :(得分:12)

要获取存储在手机SIM卡中的国家/地区代码,您可以尝试

TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getSimCountryIso();

您也可以尝试:

 Locale locale = Locale.getDefault();
 locale.getCountry();

这将返回用户声明的语言/国家/地区的数据,而不是物理位置。

答案 1 :(得分:1)

Latitude and Longitude of the current location

将为您提供经度和纬度。

我建议使用谷歌地图的反向地理编码来获取国家/地区,然后使用查找表,如果你想获得一些国家代码(我假设国家的电话代码,但我可能是错的)。

答案 2 :(得分:0)

来自Localization documentation的最佳做法 建议使用此处设置的区域设置:

context.getResources().getConfiguration().locale;

此外,还提到了此字段here。然后,您可以在其上调用getCountry()以获取ISO 3166-1定义的双字母大写ISO国家/地区代码。 注意 java doc说如果Locale与特定国家/地区不对应,它可能会返回一个空字符串。

答案 3 :(得分:0)

您可以尝试以下功能。它将返回您所在国家/地区的ISO代码:

  TelephonyManager telephonyManager = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);

        public String getSimCountryIso() {

    return telephonyManager.getSimCountryIso();

}

将以下权限添加到您的AndroidManifest.xml文件中。

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>