最近在做图库的项目,在做删除时直接调用了file.delete()方法,文件是已经删除了,但是进媒体库发现图片还在,这个时候应该做的就是在删除完成后手动的去刷新媒体库,这样就可以将最新的数据更新到媒体库,同理,当使用代码添加完一张图片后,如果要实时的在媒体库中进行显示,也应该使用此方法动态更新媒体库。
File image = new File(filePath);
image.delete();
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(image));
sendBroadcast(intent);
ps:类似操作最好使用ContentProvider来完成,比如以下代码可以直接删除图片、图片在图库中的信息和缩略图,不留痕迹
getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.ImageColumns.DATA + "=?",new String[]{filePath});
在android中,有两种广播消息:
1、Intent.ACTION_MEDIA_MOUNTED 是对媒体库进行全扫描;
2、Intent.ACTION_MEDIA_SCANNER_SCAN_FILE 则是 扫描某个文件
刷新媒体库应当选择发送适当的广播消息,使用第一种方式刷新整个媒体库,会消耗一定的时间和资源;
使用第二种方式刷新指定的文件,速度就要快很多了。所以当对单个文件或文件夹进行操作后,推荐用这种方式更新媒体库。