Android:从SD卡中删除图像

Mat*_*teo 12 android android-sdcard

我需要从用户选择的SD卡中删除图像.在我的活动中,在用户从图库中选择图像后,我执行以下代码:

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其中getPath方法是:

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;
}
Run Code Online (Sandbox Code Playgroud)

图像被正确删除,但在图库中仍然保留已删除图像的预览.当我点击它时,加载了一个黑色图像..

那么,在从我的应用代码中删除一些图像后,如何更新图库预览?

Kal*_*esh 36

你为什么要那么复杂?

你可以这么简单:

getContentResolver().delete(Utils.imgUri, null, null);
Run Code Online (Sandbox Code Playgroud)


Mat*_*teo 4

已解决添加:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
Run Code Online (Sandbox Code Playgroud)

它使 MediaScanner 服务再次运行,这应该会从设备的缓存中删除已删除的图像。

同样的问题在这里