Android:从SD卡中删除图像

时间:2011-07-15 12:51:07

标签: 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();
        }
    }
}

其中 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;
}

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

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

7 个答案:

答案 0 :(得分:36)

为什么你会这么复杂?

你可以这样简单:

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

答案 1 :(得分:4)

已解决添加:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

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

same problem here

答案 2 :(得分:0)

您是否在清单文件中设置了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />权限?

答案 3 :(得分:0)

您确定文件路径是否正确?因为实际删除的方式应该没问题,请参阅此SO线程: How to delete a file from SD card?

/ mnt /真的应该在吗?此外,您是否有权从存储中删除文件? (android.permission.WRITE_EXTERNAL_STORAGE)

答案 4 :(得分:0)

在参数“data”中你也有Uri,只需做“data.getUri()”。另外,您是否在真实设备中进行测试?如果是这样,如果是三星,那就不行了(见thread)。

答案 5 :(得分:0)

简单的一行;)

 new File(uri.getPath()).delete();

并且在manifest中必须使用这些权限

android.permission.WRITE_EXTERNAL_STORAGE

答案 6 :(得分:-2)

onDestroy 方法中添加以下代码:

 if(myFile.exists())
 myFile.delete();

并且不要忘记在清单文件中添加权限

android.permission.WRITE_EXTERNAL_STORAGE