繁体   English   中英

CameraRoll.deletePhotos([uri]) @react-native-community/cameraroll com.om 无权访问 content://media/external/images/media/88****

[英]CameraRoll.deletePhotos([uri]) @react-native-community/cameraroll com.om has no access to content://media/external/images/media/88****

描述:我想使用 cameraroll 库的 deletePhotos() function 删除图像(在 iOS 上完美运行)当我在 android 中测试代码时出现问题。

项目的目标:这是一个简单的图库应用程序,应该能够做简单的事情,例如[查看、创建、删除等](无论图库做什么)。

面临的问题:无法从 cameraRoll 库中执行删除操作。(同样,问题出在 android 仅适用于 ios)

预期结果:照片应该已从..../DCIM/Camera/xxx.jpg 路径中删除。

我遵循了库提供的所有安装规范,它们是:

第一步:

在 AndroidManifest.xml 文件中添加以上两行。

第二步<manifest...> <application android:requestLegacyExternalStorage="true"... >...

在 AndroidManifest.xml 文件的标签中添加了上述 requestLegacyExternalStorage。

第三步请求权限弹出

 async function hasAndroidPermission() { const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE; const hasPermission = await PermissionsAndroid.check(permission); if (hasPermission) { return true; } const status = await PermissionsAndroid.request(permission); return status === 'granted'; } async function savePicture() { if (Platform.OS === "android" &&;(await hasAndroidPermission())) { return; } };

运行上述 function 以获得权限要求。

现在,在完成所有这些配置后,他们(库创建者)要求:“在 Android 上,标签必须是本地图像或视频 URI,例如“file:///sdcard/img.png”。

(根据我的研究:现在他们问这个是因为早些时候他们曾经在我们使用库的 getPhotos() function 时提供 content://media/external/images/media/88**** uris。这些内容 uris 受到限制uris,如果 uris...,我们不能修改这些类型)

但现在我们得到了实际的本地 uri,例如:“file:///storage/emulated/0/DCIM/Camera/20220726_015650.jpg”

所以很明显,如果我从 getPhotos() 获得本地 uri,我会使用这个本地 uri 删除照片。 但棘手的部分来了--->当我运行这个 function 时,我得到了错误:

com.om 无权访问 content://media/external/images/media/88 ****(所有内容均为红色:))。

在此处输入图像描述

现在这个错误有点好笑,因为如果我发送一个file:// URI,那么为什么会出现关于内容 uri 的错误。

为了找出它发生的原因,我潜入了图书馆,发现在删除文件之前,他们正在将 URI 转换为内容 uri......不知道为什么......但这个发现实际上并没有帮助...... ..所以你可以忽略这个。

现在错误是权限错误,但我在调用时遇到了: const hasPermission = await PermissionsAndroid.check(permission); 它返回true。(这意味着我有权限),那么我不知道我缺乏哪里。

结论:我想删除照片,但即使授予了所有权限,我也无法实现它,而是出现错误。

请帮忙..谢谢..

我想你可能已经找到了问题的根源: To find out why it is happening I dived into the library and found out that before deleting the file they are converting the URI to content uri......

如果问题是不允许删除内容 URI,请尝试编辑库代码,使其不会首先转换 URI。 如果这对您有用,您可以运行npx patch-package <library-name>以保留更改。

无论哪种方式,我都会在他们的 github repo 上提出这个问题(如果它的问题不存在),并让他们知道你是否能够解决它。 这听起来像是维护人员可以调查的一个容易重现的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM