无法删除使用MediaStore插入的图像

时间:2017-03-16 07:43:46

标签: android image mediastore

我正在保存一张载有Picasso的图片,以便以后共享。这是我用来保存它的代码:

// Set up the projection (we only need the ID)
String[] projection = { MediaStore.Images.Media._ID };

// Match on the file path
String selection = MediaStore.Images.Media.DATA + " = ?";
String[] selectionArgs = new String[] { new File(mImageUri.toString()).getAbsolutePath() };

// Query for the ID of the media matching the file path
Uri queryUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
ContentResolver contentResolver = getContentResolver();
Cursor c = contentResolver.query(queryUri, projection, selection, selectionArgs, null);

if (c.moveToFirst()) 
{
    // We found the ID. Deleting the item via the content provider will also remove the file
    long id = c.getLong(c.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
    Uri deleteUri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
    contentResolver.delete(deleteUri, null, null);
}

c.close();

现在,当共享图像时,我必须使用URI删除它。我已经尝试了一些我在这里看到的答案,但没有一个有效。图像仍显示在图库中。这些是我使用过的方法:

File file = new File(mImageUri.toString());
// This returns false
file.delete();

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(mImageUri.toString()))));
PortInputStream

知道我做错了什么?

谢谢,

1 个答案:

答案 0 :(得分:1)

尝试删除

    String[] retCol = { MediaStore.Audio.Media._ID };

        Cursor cur = context.getContentResolver().query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                retCol,
                MediaStore.Images.Media.TITLE + "='"+TEMP_FILE_TITLE+"'", null, null
        );
    try {
        if (cur.getCount() == 0) {
            return;
        }
        cur.moveToFirst();
        int id = cur.getInt(cur.getColumnIndex(MediaStore.MediaColumns._ID));
        Uri uri = ContentUris.withAppendedId(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id
        );
       int cnt = context.getContentResolver().delete(uri, null, null);
}finally {
                cur.close();
            }

在你的情况下,替换TEMP_FILE_TITLE ="共享图像"