Android:从sd卡中删除镜像



我需要从用户选择的sd卡中删除图像。在我的Activity中,当用户从图库中选择图像后,我执行以下代码:

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

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

所以,我怎么能更新画廊预览,我从我的应用程序代码中删除一些图像后?

你为什么要把它弄得那么复杂?

你可以这么简单:

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

解析添加:

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

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

这里也是一样

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

您确定文件路径正确吗?因为你做实际删除的方式应该是好的,看看这个SO线程:如何从SD卡上删除文件?

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

在参数"data"中,您也有Uri,只需执行" data.getUri() "。另外,你是否在真实设备上进行测试?如果是,如果是三星,它是不工作的(见这个线程)。

simple one line;)

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

和manifest必须使用这些权限

android.permission.WRITE_EXTERNAL_STORAGE

onDestroy方法中添加下面的代码:

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

不要忘记在Manifest文件

中添加权限

android.permission.WRITE_EXTERNAL_STORAGE

最新更新