【问题标题】:Deleting an image after shared transition共享过渡后删除图像
【发布时间】:2016-08-07 11:02:40
【问题描述】:

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

我在这里分享过渡:

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

【问题讨论】:

  • 你能告诉我们path的值吗?
  • 是的,当然@Sohail Zahid

标签: android android-intent android-activity transition


【解决方案1】:
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");
        }

【讨论】:

  • 如果还有问题可以在这里评论?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多