2013-08-06 70 views
6

我正在制作一个文件管理器,其中图片项目有一个小缩略图。缩略图不立即刷新

我使用MediaStore得到缩略图。一切正常。但是,当我重命名或移动文件时,缩略图不显示。

我发现了一段代码,以刷新MediaStore

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

它的工作,但我必须等待4或5个第二和刷新,然后缩略图更新。

如何在重命名或移动后立即获取图像的缩略图?

+0

给它一个线程......... – Exceptional

回答

0

你是否试过直接在你正在改变的目录上进行扫描?因此,而不是

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

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

另一种方法是手动使用ThumbnailUtils

2

如果使用ACTION_MEDIA_SCANNER_SCAN_FILE而不是ACTION_MEDIA_MOUNTED(即为单个文件而不是整个目录层次结构触发刷新)会发生什么?

您将需要使用文件的URI替换目录的URI,例如使用Uri.fromFile()获取该文件的URI。

移动或重命名文件时,应刷新旧URI和新URI。

1

在Android中更新一个特定图像的推荐方式是使用ACTION_MEDIA_SCANNER_SCAN_FILE意图。更平滑的

你可以在Android Developer Site的Basic Photo Handling Training进行检查。

private void galleryAddPic() { 
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
    File f = new File(mCurrentPhotoPath); 
    Uri contentUri = Uri.fromFile(f); 
    mediaScanIntent.setData(contentUri); 
    this.sendBroadcast(mediaScanIntent); 
} 

如果您想立即为某些丢失的文件显示新缩略图,您可以自行完成。首先,像以前一样检查MediaStore,如果返回的缩略图为空,则使用ThumbnailUtilsBitmapFactory生成自己的缩略图。

而且,为了处理位图并显示它,Android培训课程中有一个安静的straightforward sample