![](/img/trans.png)
[英]Access the Camera and CameraRoll on Android using React Native?
[英]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.