【发布时间】:2011-11-07 06:54:59
【问题描述】:
如何在 Android 上检索用户的国家/地区代码?我需要权限吗?
【问题讨论】:
标签: java android localization geolocation
如何在 Android 上检索用户的国家/地区代码?我需要权限吗?
【问题讨论】:
标签: java android localization geolocation
您可以尝试以下功能。它正在返回您所在国家/地区的 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"/>
【讨论】:
最佳实践来自:Localization documentation 建议使用此处设置的语言环境:
context.getResources().getConfiguration().locale;
此外,还提到了这个字段here。然后,您可以对其调用 getCountry() 以获取 ISO 3166-1 定义的两个大写字母 ISO 国家/地区代码。 注意 java 文档说如果 Locale 与特定国家不对应,它可能会返回一个空字符串。
【讨论】:
要获取手机sim卡中存储的国家代码,你可以试试
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getSimCountryIso();
你也可以试试:
Locale locale = Locale.getDefault();
locale.getCountry();
这会返回来自用户声明的语言/国家/地区的数据,而不是实际位置。
【讨论】:
Latitude and Longitude of the current location
会得到你的纬度和经度。
我建议使用谷歌地图的反向地理编码来获取国家,然后如果你想获取一些国家代码(我假设国家的电话代码,但我可能是错的),然后使用查找表。
【讨论】: