Android Ionic 3文件权限
好了,开始吧。我在处理一个爱奥尼亚项目。在这个特定场景中,我们将测试应用程序的Android版本。我可以从文件系统中很好地获取图像,它们以字符串url的形式返回,如下所示Android Ionic 3文件权限,android,cordova,ionic-framework,ionic2,ionic3,Android,Cordova,Ionic Framework,Ionic2,Ionic3,好了,开始吧。我在处理一个爱奥尼亚项目。在这个特定场景中,我们将测试应用程序的Android版本。我可以从文件系统中很好地获取图像,它们以字符串url的形式返回,如下所示 content://com.android.providers.media.documents/document/image%3A5744 然后,应该将文件blob并将其向上传递的处理器如下所示: return this.file.readAsArrayBuffer(urlData.url, urlData.fileName
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])
})
但是我得到了错误安全性,它并没有真正提到
这适用于我用相机拍摄的照片,这些照片都有如下URL
file:///storage/emulated/0/Android/data/<appname>/cache/1502211622334.jpg
file:///storage/emulated/0/Android/data//cache/1502211622334.jpg
问题是,据我所知,没有任何文档说明是什么导致了这个错误。我不知道要修改什么才能使我的代码正常工作。我已经使用checkFile方法验证了URI是否有效 因此,您不能将内容url与file.readAsArrayBuffer一起使用,而必须首先将url解析为readAsArrayBuffer可以理解的内容。为此,我使用了 一旦它被安装并包含在我需要它的页面中,我就使用
filePath.resolveNativePath(url)
方法,因为它返回一个承诺,所以我将readAsArrayBuffer链接到它前面的then语句上。我确实需要使用if语句为内容URL(需要resolveNativePath)和已经工作的非内容URL提供分支路径
据我所知,这个解决方案是有效的 谢谢分享你的发现!它在一定程度上对我起了作用,因为现在我遇到了以下错误:
权限拒绝:读取com.android.providers.media.MediaDocumentsProviderURIcontent://com.android.providers.media.documents/document 从pid=14113,uid=10260要求您使用ACTION\u OPEN\u DOCUMENT或相关api获得访问权限
您需要在我想说的清单中为该api启用权限吗?我已经有两年没有接触过这个东西了,但我记得有一个顶级文件需要编辑。谢谢你的回复!如果有人需要,我会尝试一下,应该是正确的轨道