无论用户位置设置如何,如何确定 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 目前看来是正确的。可能这会对你有所帮助
我需要确定设备所在的国家/地区 (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 目前看来是正确的。可能这会对你有所帮助