Android: remove an image from sd card

Matteo picture Matteo · Jul 15, 2011 · Viewed 21.6k times · Source

I need to remove an image from sd card chosen by user. In my Activity, after an user select an image from gallery, i execute this code:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Utils.imgUri = data.getData();
            Utils.imgPath = getPath(Utils.imgUri);
            File file = new File(Utils.imgPath);
            boolean deleted = file.delete();
        }
    }
}

where getPath method is:

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if(cursor!=null){
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    else return null;
}

The images are correctly removed but in the gallery still remain a preview of the removed image. When i tap on it, is loaded a black image..

so, How can I update the gallery previews, after I delete some images from my app code?

Answer

Kalpesh picture Kalpesh · Dec 3, 2011

Why would you make it that complex?

You can do it as simple as this:

getContentResolver().delete(Utils.imgUri, null, null);