无论用户位置设置如何,如何确定 Android 设备的当前国家/地区位置?

How to determine an Android device's current country location regardless of user location settings?

我需要确定设备所在的国家/地区 (iso3),即使用户设备已关闭 GPS 并且不允许应用访问其位置。

我还需要考虑没有 SIM 卡因此无法使用 telephonyManager 的平板电脑。

出于这个原因,我不相信我可以使用位置管理器(也因为这些原因:LocationManager requestLocationUpdates doesn't work

我认为我需要的方法是向第三方 ip 位置发出一个简单的 HTTP 请求 api: 例如 http://www.ipinfodb.com/ip_location_api.php 或者 https://freegeoip.net

这是最好的方法吗? open api 最好用什么?

您可以使用 TelephonyManager

TelephonyManager tm = (TelephonyManager)this.getSystemService(this.TELEPHONY_SERVICE);
String countryCode = tm.getNetworkCountryIso();

更新: 由于您不能使用电话,我建议您尝试此操作,因为它是用户在设置设备时输入的信息。

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

您的第三方 ip 定位方法 api 目前看来是正确的。可能这会对你有所帮助

http://ip-api.com/docs/api:json

http://ip-api.com/json