【发布时间】:2016-01-04 20:38:17
【问题描述】:
我正在将 Meteor (1.2.0.2) 应用部署到 Android 设备。
我安装了插件
meteor add cordova:cordova-plugin-geolocation@1.0.0
添加了 Cordova 插件 cordova-plugin-geolocation@1.0.0。
我使用插件:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(function(p){ // onSuccess
console.log(p);
}, function(e){
console.log(e);
});
}
在桌面上完美运行(将 p 作为 Geolocation 对象打印)但在移动设备上它只是忽略回调(成功和错误)。
我通过设置断点在 Chrome DevTools (chrome://inspect) 中对其进行了测试。它会一直执行到 .getCurrentPosition 调用,但随后(跳过或介入)只是跳过两个回调(如果我在它们中设置断点,它们就不会被命中)。
我什至尝试过
navigator.geolocation.getCurrentPosition(function(p){ console.log(p);
都在桌面控制台上(工作)
undefined
Geolocation { ... }
和移动(不工作)
undefined
// nothing else is printed
可能与应用的权限有关?
EDIT:我验证了AndroidManifest.xml,权限实际上是由插件设置的:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
【问题讨论】:
-
你运行的是什么版本的android?您是使用 crosswalk 包还是使用系统 webview?另外,在调试方面,请检查您的
adb logcat是否有错误,它们没有被抛出到控制台。 -
我没有使用人行横道,但我读到存在兼容性问题。我会试试logcat。谢谢
-
我试过人行横道。同样的问题。我正在部署到 Android 5.0。我尝试使用 adb logcat 但我不知道如何检测错误/按包过滤(似乎不可能)