Android未在离子应用中请求权限

时间:2017-09-10 16:56:48

标签: android cordova permissions ionic2

我正在构建允许人们发布图片和视频的应用程序,主要是尝试了解离子,cordova,android等等,但出于某种原因,每当我尝试使用cordova文件插件打开文件时,它都没有不要求用户访问存储的权限,代码失败,用户卡在加载屏幕上。 代码非常简单,他们拍摄视频,进行转码,然后将转码后的文件上传到firebase存储桶。如果我退出应用,请转到settings-> apps-> my app->权限,然后手动启用存储权限,它可以正常工作。问题是,我需要在运行时或安装时询问用户是否允许,但事实并非如此。这是代码..

this.media.captureVideo().then(file => {
  this.editor.transcodeVideo({
    fileUri: file[0].fullPath,
    outputFileType: this.editor.OutputFileType.MPEG4,
    outputFileName: 'temp_test',
    saveToLibrary: false,
    height: 800,
    width: 800,
    maintainAspectRatio: false
  }).then(fileUri => {
    let pathIndex = fileUri.lastIndexOf('/'),
        finalPath = 'file://' + fileUri.substr(0, pathIndex), 
        name = fileUri.substr(pathIndex + 1, fileUri.length);
    this.file.readAsArrayBuffer(finalPath, name).then(file => {
        //upload
    }).catch(err => { console.log(err); });
  });
});

然而,这只有在我打开手机设置,转到应用程序,然后是我的应用程序,然后是权限,然后手动启用存储时才有效。有没有办法在离子中申请许可?我搜索和搜索过,我能找到的所有答案都是特定于相机,或者是用Java工作,但离子不是java。谢谢。

2 个答案:

答案 0 :(得分:3)

有效cordova-plugin-media-capture使用cordova-plugin-file,因此必须以编程方式询问READ_EXTERNAL_STORAGE权限。

Ionic为Android Permissions提供原生支持:

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

希望它有所帮助。

答案 1 :(得分:0)

唯一对我有用的是 Android 诊断插件。检查这个post