android - 打开失败: EACCES (Permission denied) in ionic -2

标签 android ionic-framework ionic2 filechooser

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

现在抛出“异常”:“/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新的权限检查机制而设计的。

从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)
        );

      }

关于android - 打开失败: EACCES (Permission denied) in ionic -2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49686155/

相关文章:

android - 当应用程序被杀死时,应用程序小部件点击不起作用

java - 如何在android中的字符串资源中使用整数资源

javascript - 从 Objective C 委托(delegate)回调到 Cordova 插件

javascript - Ionic 3在html模板中设置值

android - ionic Action 表取消按钮不显示在 android 上

typescript - 如何在 Ionic 2 应用程序中终止 Google OAuth session (通过 Firebase)?

android - RippleDrawable 不能用作 ViewGroup 的可绘制对象

android - 我如何以编程方式进行单铃调用以及如何判断我调用的线路是否已关闭?

android - Ionic 2 推送插件 : White Square while application is in Background?

angular - 如何在 ionic 2 和 Angular 2 上使用 http post 方法?