打开失败:离子 -2 中的 EACCES(权限被拒绝)



我在Ionic移动应用程序上使用cordova-plugin-file-transfer和cordova-plugin-file-chooser将一些文件上传到Android设备,该设备可以使用pdf,word,excel等本机应用程序打开。等

它现在抛出"异常":"/storage/emulated/0/Download/pdf-test.pdf:打开失败:EACCES(权限被拒绝("}"。

openFile() {
    console.log("openFile");
        this.fileChooser.open()
      .then(uri => {
        console.log(uri)
        const fileTransfer: FileTransferObject = this.transfer.create();
        let options: FileUploadOptions = {
          fileKey: 'files',
          fileName: 'name.doc',
           params: { resume: uri},
          chunkedMode: false,
          headers: {
            'token': this.token,
            'sid': this.sid,
            'user': this.user,
            'to': this.to,
            'node': this.node,
            'type': 'doc',
            'cap': this.cap
          }
        }
        console.log("Headers" + JSON.stringify(options));
        fileTransfer.upload(uri,this.apiurl, options)
          .then((data) => {
            // success
            console.log("Response data ->>>>>>> :- " + JSON.stringify(data));
            alert("success" + JSON.stringify(data));
          }, (err) => {
            // error
            console.log("Error data ->>>>>>> :- " + JSON.stringify(err));
            alert("error" + JSON.stringify(err));
          });
      })
      .catch(e => console.log(e));
  }

我还在AndroidManifest上添加了权限.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

安卓权限

该插件旨在支持Android新的权限检查机制。

从 Android 6.0 开始,Android 权限检查机制发生了变化。过去,权限是由用户在决定安装应用程序时授予的。现在,权限应由用户在使用应用程序时授予。

对于您(开发人员(使用的旧 Android 插件可能不支持此新机制或已停止更新。因此,要么找到一个新插件来解决这个问题,要么尝试在旧插件中添加机制。如果您不想这样做,可以尝试使用此插件。https://ionicframework.com/docs/native/android-permissions/

filePermission() {
        this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE).then(
          result => console.log('Has permission?', result.hasPermission),
          err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE)
        );
      }

相关内容

  • 没有找到相关文章