簡體   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