Cordova 应用程序 'Android permission Cordova plugin' 未显示权限对话框

标签 cordova permissions cordova-plugins android-6.0-marshmallow

我正在为我的cordova应用程序使用“imagepicker”插件来从移动图库获取图像并使用它们。我正在 android 6.0 设备上测试我的应用程序,这就是问题所在,marshmallow Android 6.0 需要运行时权限,不像旧版本“它正在旧版本上工作”,但在 api 23 或更高版本上,当它参加打开画廊时它立即关闭并且应用程序崩溃。当我搜索时,我发现我需要许可才能这样做。所以我开始使用“Android 权限 Cordova 插件”并复制他们在此页面中提供的示例:https://www.npmjs.com/package/cordova-plugin-android-permissions

这是:

var permissions = cordova.plugins.permissions;
permissions.hasPermission(permissions.CAMERA, checkPermissionCallback, null);

function checkPermissionCallback(status) {
  if(!status.hasPermission) {
    var errorCallback = function() {
      console.warn('Camera permission is not turned on');
    }

    permissions.requestPermission(
      permissions.CAMERA,
      function(status) {
        if(!status.hasPermission) errorCallback();
      },
      errorCallback);
  }
}

控制台总是显示:“相机权限未打开”并且不显示权限对话框。

然后我再次搜索并找到了这个已解决的问题及其答案,因此我安装了“cordova-plugin-diagnostic”并尝试了以下代码:

function requestPermission(){
    cordova.plugins.diagnostic.requestRuntimePermission(function(status){
        switch(status){
            case cordova.plugins.diagnostic.runtimePermissionStatus.GRANTED:
                console.log("Permission granted (or already granted) - call the plugin");
                // call SQLite plugin
                break;
            case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED:
                console.log("Permission denied - ask again");
                alert("Come on user, we really need this. I'll ask again...");
                requestPermission();
                break;
            case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED_ALWAYS:
                console.log("Permission permanently denied");
                alert("Well that's it, we're dead Jim");
                navigator.app.exitApp();
                break;
        }
    }, function(error){
        console.error("The following error occurred: "+error);
    }, cordova.plugins.diagnostic.runtimePermission.READ_PHONE_STATE);
}
requestPermission();

应用程序关闭,也没有显示对话框,我想我无法得到这个插件应该做什么以及如何获得打开图库的权限。如果有人能给我完整的例子来打开图库并在获得许可的情况下选择图像,这将是很大的帮助。

抱歉我的英语不好,感谢您的耐心等待。

最佳答案

通过将相关权限和功能添加到platforms/android/AndroidManifest.xml,我能够获取要显示的权限请求。

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="true" />

关于Cordova 应用程序 'Android permission Cordova plugin' 未显示权限对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371495/

相关文章:

c - 安装C库但权限被拒绝?

javascript - cordova.file 未为 windows/wp8 定义

android - 发布版本的 Cordova inAppBrowser "ResourceType"类型问题

ios - 从 cordova 读取 Microsoft Intune 应用程序配置属性

android - 为什么Android的一些权限在原来的Android Developers页面中没有列出?

.net - 调试时临时更改 list requestExecutionLevel

cordova-plugins - 如果我有完整路径,如何使用 Filesystem.readFile

ios - 如何使用 Cordova 获取 iOS 用户设置的设备名称?

javascript - 无法在 pubnub javascript 回调中收到错误

android - Angular2 + Cordova - 启动时无法匹配任何路由