首页 文章

为什么$ cordovaImagePicker插件在Marshmallow上崩溃了?

提问于
浏览
1

我是集成$ cordovaImagePicker,它在kit kat和棒棒糖上工作正常,但最近我安装了它在Marshmallow上崩溃的相同应用程序 . 以下是我使用的代码:

$cordovaImagePicker.getPictures(options).then(function (results) {
    for (var i = 0; i < results.length; i++) {
        $scope.imagePath = results[i];
    }
}, function(error) {
    console.log('Error: ' + JSON.stringify(error));
});

java.lang.SecurityException:Permission Denial:读取com.android.providers.media.MediaProvider uri content:// media / external / images / media from pid = 10669,uid = 10319需要android.permission.READ_EXTERNAL_STORAGE或grantUriPermission( )在android.content.ContentProvider的android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:605)上的$ . Transport.enforceReadPermission(ContentProvider.java:480)在android.content.ContentProvider $ Transport.query(ContentProvider.java:211)在Android.os.Binder.execTransact(Binder.java:453)的android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)

有帮助吗?

1 回答

  • 1

    花了一些时间后,我发现Android Marshmallow有不同的许可机制,它在运行时请求许可,所以需要照顾它 . 下面是代码

    var permissions = cordova.plugins.permissions;
    permissions.hasPermission(permissions.READ_EXTERNAL_STORAGE, 
                function(status) {
                   if (status.hasPermission) {
                       $cordovaImagePicker.getPictures(options).then(function (results) {
                            for (var i = 0; i < results.length; i++) {
                                $scope.imagePath = results[i];
                            }
                        }, function(error) {
                              console.log('Error: ' + JSON.stringify(error));    // In case of error
                        });
                    } else {
                      //permission is not granted case, now preparing for granting permission
                        permissions.requestPermission(
                            permissions.READ_EXTERNAL_STORAGE,
                            function(status) {
                              if(!status.hasPermission) {
                                console.log();
                              }
                            },
                            function(status) {
                                console.log();
                            }
                        );                      
                    }
               }, function(status) {
                  console.log("permission not available");
                });
    

    首先,如果未授予许可,我会检查是否授予权限,然后请求许可 . 有关下面的详细信息,链接可能会有所帮

    https://www.npmjs.com/package/cordova-plugin-android-permissions

相关问题