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

Sur*_*cse 5 android mediastore android-contentresolver

我正在使用 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);
Run Code Online (Sandbox Code Playgroud)

我能够创建该 xyz.pdf 文件

但是,为了删除我正在使用的文件

 getActivity().getContentResolver().delete(fileUriToDelete, null, null);
Run Code Online (Sandbox Code Playgroud)

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

由于该文件仍然在以下位置可用:InternalStorage/Documents/MyFolderName 这种情况仅在 Android 10 中发生。在 Android 11 中,该文件将从文件系统以及 MediaStore.Files db 中删除

小智 0

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

<android:requestLegacyExternalStorage="true"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage"
 android:maxSdkVersion="28"/>`
Run Code Online (Sandbox Code Playgroud)

1