【发布时间】:2015-11-21 21:05:33
【问题描述】:
我有一个使用 Cordova 的应用程序,并且我已经从官方存储库安装了这个插件:
插件安装:cordova插件添加cordova-plugin-geolocation
设备就绪事件:
onDeviceReady: function() {
app.receivedEvent('deviceready');
console.log('deviceready');
loadPosition();
}
在 deviceready 事件中我调用了这个函数:
加载位置函数:
function loadPosition() {
// onSuccess Callback
// This method accepts a Position object, which contains the
// current GPS coordinates
//
var onSuccess = function (position) {
localStorage.setItem("latitude", position.coords.latitude);
localStorage.setItem("longitude", position.coords.longitude);
localStorage.setItem("position", true);
};
// onError Callback receives a PositionError object
//
function onError(error) {
localStorage.setItem("position", false);
alertErrorPosition();
}
function alertErrorPosition() {
navigator.notification.alert(
'Necesitamos utilizar tu ubicación para poder hacer funcionar la aplicación. Reinicia la aplicación o vuélve a instalarla . Gracias.', // message
null, // callback
'¡Error!', // title
'Ok' // buttonName
);
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
问题:
在 Android 上,如果 App 无法获取本地化(例如 GPS 未激活),我看不到警报错误,但在 iOS 上,如果用户拒绝访问,我可以看到错误警告。
如果用户启用了GPS,我没有任何问题,应用程序正确获取纬度和经度。
我已经在模拟器和真实设备中对其进行了测试。我正在使用 Android Studio 进行测试。
谢谢!!
【问题讨论】:
-
android上的地理定位插件不包含任何本机代码,所以问题出在webview上,它可能会在某些设备上调用错误回调,而在其他设备上可能不会调用它,具体取决于android版本和电话供应商
标签: android cordova cordova-plugins