共享过渡后删除图像

Deleting an image after shared transition

我正在创建一个带有共享过渡动画的应用程序。为此,我创建了一个带有图像的意图。但是图像会存储在设备上。但是如何在转换后删除它?

我在这里分享转换:

Bitmap photo = ((BitmapDrawable) drawable).getBitmap();
String path = MediaStore.Images.Media.insertImage(getContentResolver(), photo, "pic", null);
Uri uri = Uri.parse(path);
intent.putExtra(Intent.EXTRA_STREAM, uri);

我在这里收到 uri:

pic = extras.getParcelable(Intent.EXTRA_STREAM);

这里我尝试删除图片,但没有找到:

File fdlt = new File(pic.getPath());
        if (fdlt.exists()) {
            if (fdlt.delete()) {
                Log.e("DELETED", "DELETED");
            } else {
                Log.e("NOT DELETED", "NOT DELETED");
            }
        } else {
            Log.e("FILE NOT FOUND", "FILE NOT FOUND");
        }

图片路径示例:/external/images/media/2750

您可以将图像存储在应用的缓存目录中,让 Android 负责删除它:Creating temporary files in Android

File fdlt = new File(pic.getPath());
        if (fdlt.exists()) {
            if (fdlt.delete()) {
                Log.e("DELETED", "DELETED");
            } else {
                Log.e("NOT DELETED", "NOT DELETED");
            }
        } else {
            Log.e("FILE NOT FOUND", "FILE NOT FOUND");
        }

将您的此代码替换为以下代码。

        int size = 0;
        size = this.getContentResolver().delete(pic,
                null, null);
        if (size == 0) {
            Log.e("NOT DELETED", "NOT DELETED");
        } else {
            Log.e("DELETED", "DELETED");
        }