如何在Android上检索用户的国家/地区代码?我需要权限吗?
答案 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"/>