我正在为Android平台构建Cordova应用程序。
我需要获取用户的国家/地区。
我知道地理定位会给出GPS坐标。
有没有办法让国家不使用任何外部API?如果不可能,什么是最好的解决方案?
答案 0 :(得分:3)
从UX和法律角度来看,您需要哪个国家/地区有重要区别:
[1] http://www.ecma-international.org/ecma-402/1.0/
[2] https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-globalization/
答案 1 :(得分:2)
我可以想到几个选择。下面提供了该列表,它是按需要的最小努力排序的,另一方面是信息的准确程度。
用法
function successCallback(obj) {
var locale = obj.value;
}
navigator.globalization.getPreferredLanguage(successCallback, errorCallback);
您的手机网络提供商的国家/地区ISO
根据插件作者。要使用该插件,您的代码将看起来像这样
deviceInfo.get(function(result) {
console.log("result = " + result);
}, function() {
console.log("error");
});
其中结果将包含 netCountry 调用字段作为返回字符串的一部分。
答案 2 :(得分:1)
如果您的应用仅适用于带有SIM卡的手机或设备,则可以使用SIM信息插件https://github.com/dtmtec/cordova-plugin-carrier。
答案 3 :(得分:-2)
一个简单的解决方案是创建一个自定义插件并使用Google地理编码器,此代码从纬度和经度返回位置...这不是cordova,您需要进行一些更改
try {
Geocoder gcd = new Geocoder(this, Locale.getDefault());
List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
if (addresses.size() > 0)
String cityname = addresses.get(0).getLocality();
String country = addresses.get(0).getCountryName();
} catch (IOException e) {
e.printStackTrace();
}