如何删除我在 Android Q 中创建的文件?

Vol*_*yrH 4 android android-10.0

我正在 DCIM 目录中保存图像,但在某些情况下,我需要删除它。以前,我只调用了 image.delete(),其中图像是文件。但现在这张图片以另一种方式保存:

    contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
    contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/png");
    contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, "DCIM" + File.separator + IMAGES_FOLDER_NAME);

    Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
    OutputStream fos = resolver.openOutputStream(imageUri);
    boolean saved = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
Run Code Online (Sandbox Code Playgroud)

我尝试使用其名称进行查询并调用 contentResolver.delete(...),但它不起作用。

我有权写入外部存储,但我不想使用 SAF。

我怎样才能删除这样的文件?

gre*_*f82 6

您需要使用调用insert 时获得delete的方法。ContentResolverUri

 Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
 OutputStream fos = resolver.openOutputStream(imageUri);
 boolean saved = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
 ......
 int result = resolver.delete(imageUri, null, null);
 if (result > 0) {
     Log.d("Tag", "File deleted");
 }
Run Code Online (Sandbox Code Playgroud)

如果您没有存储 Uri,则需要执行query()、检索内容,然后调用delete