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

5

我需要在Android上检索用户的国家代码,我需要请求权限吗?


https://dev59.com/dVwZ5IYBdhLWcg3wVfAC#75714418 - Meet Bhavsar
4个回答

11

要获取手机sim卡中存储的国家代码,可以尝试以下操作:

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

你也可以尝试:

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

此函数返回用户指定的语言/国家数据,而非物理位置。


5
我不明白这种回答。那WiFi设备呢?没有SIM卡的设备呢?有SIM卡但在国外的设备呢? - Sotti

1

当前位置的纬度和经度

将为您获取纬度和经度。

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


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"/>

0

最佳实践来自于:本地化文档,建议使用此处设置的区域设置:

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

此外,该领域还在这里提到。您可以在其上调用getCountry()方法,以获取由ISO 3166-1定义的两个字母大写ISO国家代码。请注意,Java文档指出,如果区域设置不对应于特定国家/地区,则可能返回空字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接