Cordova文件插件readAsDataURL失败,代码为:Android上的2 SECURITY_ERR

时间:2019-01-09 16:14:37

标签: android typescript ionic-framework cordova-plugins ionic4

我目前正在尝试在Ionic 4中实现聊天功能,该功能包括附加文件的功能。为此,我正在使用FileChooser插件。然后,我想通过FileChooser提供的URI获取文件的base64编码内容。但是,我似乎无法使readAsDataURL调用正常工作。

我已经尝试过使用Base64插件,但是它总是返回一个空字符串,没有上下文指出问题所在。我还尝试了多种方法来提供/分割路径,但是根本找不到该文件,或者出现了与当前版本相同的问题。我还检查了我的AndroidManifest.xml,其中包含

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
以及
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
这是我用来读取所选URI内容的代码:
handleUri (uri : string) {
  let $this = this;
  console.log("URI: "+uri);
  $this.file.resolveLocalFilesystemUrl(uri).then(
    (entry) => {
      let fileEntry = <FileEntry> entry;
      fileEntry.file( 
        (file) => {
          let path      : string = fileEntry.toURL();
          let mimeType  : string  = file.type
          let dirPath   : string = path.substr(0,path.lastIndexOf('/') + 1);
          let fileName  : string = path.substr(path.lastIndexOf('/') + 1);
          console.log("DirPath: "+dirPath);
          console.log("FileName: "+fileName);
          $this.file.checkFile(dirPath,fileName).then(
            (exists) => {
              console.log("File does "+( exists ? "" : "not ")+ "exist");
            }
          );
          $this.file.readAsDataURL(dirPath,fileName).then(
            (string) => {
              console.log("ReadAsDataURL: "+string);
            },
            (error) => {
              console.log("ReadAsDataURL failed: "+JSON.stringify(error));
            }
          );
        }
      )
    },
    (error) => {
      console.log(JSON.stringify(error));
    }
  )
}

人们会认为这些权限足以读取现有文件。 我需要授予其他权限吗?

0 个答案:

没有答案