android - ionic 3 文件权限

标签 android cordova ionic-framework ionic2 ionic3

好吧,这就去。我正在处理一个 ionic 项目。在这个特定的场景中,我们正在处理测试应用程序的 Android 版本。我可以很好地从文件系统中获取图像,它们以字符串 url 的形式返回,看起来像这样,

content://com.android.providers.media.documents/document/image%3A5744

然后应该对文件进行 blob 并将其向上传递的处理器如下所示:
return this.file.readAsArrayBuffer(urlData.url, urlData.fileName)
  .then((item) => {
      return new Blob([new Uint8Array(item)]);
  })
  .catch((err) => {
    console.log(err.message)
  }).then((res)=>{
    return new Blob([res])
  })

但后来我得到错误 SECURITY_ERR,the documentation真的不谈了。

这适用于我用相机拍摄的照片,它们都有这样的 url
file:///storage/emulated/0/Android/data/<appname>/cache/1502211622334.jpg

问题是,据我所知,没有关于导致此错误的原因的文档。我不知道要更改什么才能使我的代码正常工作。我已经使用 checkFile 方法验证了 URI 是否有效。

最佳答案

因此,事实证明您不能将内容 url 与 file.readAsArrayBuffer 一起使用,而是必须首先将 url 解析为 readAsArrayBuffer 可以理解的内容。为此,我使用了 ionic native filePath plugin .

一旦它被安装并包含在我需要它的页面中,我就使用了

filePath.resolveNativePath(url)

我的 url 上的方法,因为这会返回一个 promise ,所以我将我的 readAsArrayBuffer 链接到前面的 then 语句上。我确实必须使用 if 语句来为内容 url(这需要 resolveNativePath)和已经工作的非内容 url 提供分支路径。

据我所知,此解决方案有效。

关于android - ionic 3 文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574181/

相关文章:

java - 在工具栏中找不到 textView id

mobile - Tiggr vs 应用程序

android - Cordova Android 应用程序从 MobileFirst 8.0 服务器获取 "invalid_client"

android - 建立Android项目时,ionic无法下载Gradle 2.2.1

java - 如何让 myfirstapp 在 android studio 上运行?

android - 是否可以通过编程方式从 Firebase Analytics 控制台收集数据?

android - 在 Activity 中获取 Activity

c# - 从 C# 调用 JavaScript 时出现错误 UnathorizedException

javascript - Angular.JS 未捕获类型错误 : Cannot assign to read only property

html - 将文本拖放到 2 行上 - Ionic 1