我读了很多关于这个问题的帖子,但我还没有确切地读到如何解决我的问题。我用cordova创建了一个移动应用程序,我需要位置服务来显示地图。在我的清单中,我添加了权限,在Android5或更低版本中运行良好,但在Android6中定位服务失败。我在新的Android版本中读到Google更改权限方法,并读到我可以用Cordova中的一些插件来模拟这一点,但失败了(或者我不知道如何工作)。
我的index.js里有这个
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(CurrentPosition);
};以及我的manifest.xml中的此权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />你知道如何在Android 6中运行定位服务吗?
发布于 2016-10-28 08:55:18
如果你使用cordova-plugin-geolocation,它会负责在Android Marshmallow及更高版本上发起权限请求。
然后,您应该能够正常使用navigator.geolocation。
配置将类似于:
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.GeoBroker" />
</feature>在你的config.xml里。我不确定包裹的名字,目前在我的手机上。
或者只是:
cordova plugin add cordova-plugin-geolocation
如果使用的是科尔多瓦5+。
发布于 2016-10-29 02:22:05
我下载了cordova.plugins.diagnostic,并在index.js中使用此代码在应用程序启动时运行,但不起作用。
cordova.plugins.diagnostic.getLocationAuthorizationStatus(function (status) {
switch (status) {
case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
console.log("Permission not requested");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED:
console.log("Permission denied");
break;
case cordova.plugins.diagnostic.permissionStatus.GRANTED:
navigator.geolocation.getCurrentPosition(CurrentPosition);
console.log("Permission granted always");
break;
case cordova.plugins.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE:
console.log("Permission granted only when in use");
break;
}
}, function (error) {
console.error("The following error occurred: " + error);
});发布于 2017-02-28 20:34:19
编辑AnroidManifest.xml并将android:targetSdkVersion更改为22
android:targetSdkVersion="22"https://stackoverflow.com/questions/40296249
复制相似问题