【问题标题】:Android not requesting permission in ionic appAndroid未在离子应用程序中请求许可
【发布时间】:2018-02-18 23:02:02
【问题描述】:

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

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 中工作,但 ionic 不是 Java。谢谢。

【问题讨论】:

标签: android cordova permissions ionic2


【解决方案1】:

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

Ionic 提供对Android Permissions 的原生支持:

this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
        .then(status => {
          if (status.hasPermission) {
            this.captureVideo();
          } else {
            this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
            .then(status =>{
              if(status.hasPermission) this.captureVideo();
            });
          }
        }

希望对你有帮助。

【讨论】:

  • 这应该添加到哪里?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2018-03-01
    • 2015-11-21
    相关资源
    最近更新 更多