android - 获取用户所在国家/地区的可靠方法?

标签 android locale setting

我通常从设备的语言中获取国家/地区。它有效,但现在我必须承认巴西。而且大部分设备只有葡萄牙语(pt_PT),没有葡萄牙语(巴西)选项。

我检查了这个帖子:Where am I? - Get country

方法

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

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

仍然只有语言,没有帮助。

还有关于 sim 卡的建议,但我不确定这是否能可靠地工作(所有 sim 卡都有这个唯一标识吗?),它也有点不完全是我需要的,因为用户可以' t 改变它(如果它是一个设置就是这种情况),它将排除使用没有 sim 卡的设备的用户(也许他们只使用 WLAN)。

还有地理定位建议,但这可能不适用于已停用它的设备。还是我错了?

如果没有其他帮助,我会在我的应用程序中进行对话框或菜单设置,以便用户可以在那里选择它。但我想先确认一下该设备是否有任何可靠的可能性。

最佳答案

您可以拉取位置from the phone network :

TelephonyManager.getNetworkCountryIso()

from the SIM card :

TelephonyManager.getSimCountryIso()

或者,如果您 have the user's phone number ,您或许可以通过 this data 将其与国家/地区匹配.

理想情况下,您可以使用所有这三个(按某种顺序,可能是 SIM、电话号码,然后是网络),如果都不起作用,则将反向地理定位作为最后的手段。

关于android - 获取用户所在国家/地区的可靠方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872483/

相关文章:

java - 检查 getAccountsByType() 是否找到帐户

java - 在 Java 中实现用户定义的 native 语言环境

file-upload - 可以在 DNN Setting.ascx 中使用 FileUpload 吗?

android - 不能同时使用 `BottomNavigationView` 和 `ViewPager` 和 `TabLayout`

java - Android自定义对话框seekbar

android - 在 LinearLayout 中对齐 TextView 和 ImageView

c++ - 如何标记(单词)将标点符号分类为空格

java - 更改默认区域设置语言 android

android - 输入法安卓键盘

module - 'scope:setting(Key, Value)' 和 'setting(scope:Key, Value)' 之间的区别