簡體   English   中英

在 AndroidManifest 中使用 requestLegacyExternalStorage = true 刪除 Android API 29 和 30 上的文件時出現 RecoverableSecurityException

[英]Getting RecoverableSecurityException while deleting file on Android API 29 and 30 with requestLegacyExternalStorage = true in AndroidManifest

下面是 AndroidManifest 文件代碼

<application
    android:name=".application.SomeApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:largeHeap="true"
    android:networkSecurityConfig="@xml/network_config"
    android:hardwareAccelerated="true"
    android:resizeableActivity="true"
    android:requestLegacyExternalStorage="true"
    android:theme="@style/THEME_DEFAULT_BLUE_ACCENT">

刪除文件代碼

val result = CommonApp.getContext().contentResolver.delete(fileForAction.uri,
                        "${MediaStore.MediaColumns._ID} = ?", arrayOf(fileForAction.id.toString()))
                if(result > 0){ successDeleted++ } else { failedDeleted++ }

在上面的代碼中 fileForAction.uri 是特定的視頻文件 uri 示例:“content://media/external/video/media/23”

我已經在 Android API 29 級和 30 級上對此進行了測試。 但是獲取 android.app.RecoverableSecurityException: com.packagename.someapp 無法訪問 content://media/external/video/media/23

正如我在本文檔中閱讀的https://developer.android.com/training/data-storage/shared/media#remove-item

如果作用域存儲不可用或未啟用,我們可以刪除其他應用程序擁有的文件,而無需處理 RecoverableSecurityException。

為什么當我選擇通過在 AndroidManifest 中提供 android:requestLegacyExternalStorage = true 來禁用范圍存儲時刪除文件時出現 RecoverableSecurityException

您不是在刪除文件。 您正在從MediaStore中刪除代表一段內容的條目。 android:requestLegacyExternalStorage = "true"與從MediaStore中刪除條目無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM