Android 10:contentResolver.delete()未从文件系统中删除文件。

5
我正在使用MediaStore.Files来创建我的文件,位于InternalStorage/Documents/MyFolderName/xyz.pdf。
使用
ContentValues contentValues = new ContentValues();
        contentValues.put(MediaStore.Files.FileColumns.DISPLAY_NAME, fileName);
        contentValues.put(MediaStore.Files.FileColumns.MIME_TYPE, fileType);
        contentValues.put(MediaStore.Files.FileColumns.IS_PENDING, 1);
        contentValues.put(MediaStore.Files.FileColumns.RELATIVE_PATH, dstPublicDirectory + File.separator + dstSubDirectory);

        // Getting content uri for the file

        Uri dstFileUri = resolver.insert(MediaStore.Files.getContentUri("external"), contentValues);

我能够创建那个 xyz.pdf 文件,

但是,为了删除那个文件,我使用的是:

 getActivity().getContentResolver().delete(fileUriToDelete, null, null);

以上内容已从MediaStore.Files数据库中删除,但无法在文件系统中删除该文件。

由于该文件仍然可在以下位置找到: InternalStorage/Documents/MyFolderName 这只发生在Android 10中。在Android 11中,该文件将从文件系统以及MediaStore.Files数据库中删除。


你是在一个片段中完成这项工作吗? - Khaby Lame
是的,我正在从一个片段中删除那个文件URI。 - Surajkumar_cse
对于Android 10,您可以使用android:requestLegacyExternalStorage="true"并通过文件系统API将其删除。 - CommonsWare
@Surajkumar_cse https://dev59.com/I1IH5IYBdhLWcg3wL6dJ@Surajkumar_cse https://dev59.com/I1IH5IYBdhLWcg3wL6dJ - PerracoLabs
显示剩余3条评论
1个回答

0

请确保将您的清单设置与此相同,我遇到了同样的问题,我的文件在Android 11上被删除,但在Android 10上没有被删除,然后我启用了状态并添加了此标签,因此请指定写入权限。

<android:requestLegacyExternalStorage="true"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage"
 android:maxSdkVersion="28"/>`

1


我还附上了标题为“1”的图片链接,所以请点击它并匹配您的清单。 - Sheraz Ghani
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Bharat Lalwani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接