缩略图不会立即刷新

我正在制作一个文件管理器,其中图片项目有一个小缩略图

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

我find了一段代码来刷新MediaStore

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

它工作但我必须等待4或5秒并刷新,然后缩略图更新。

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

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

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

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

在Android中更新一个特定图像的推荐方法是使用ACTION_MEDIA_SCANNER_SCAN_FILE意图。 而且更顺畅

您可以在Android开发者网站的基本照片处理培训中查看。

 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,如果返回的缩略图为null,则使用ThumbnailUtils或BitmapFactory生成自己的缩略图 。

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

您是否尝试直接在要更改的目录上执行扫描? 而不是

 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 。

实际上发送Intent.ACTION_MEDIA_MOUNTED广播意图真的很难看。 阅读这篇文章http://androidyue.github.io/blog/2014/01/19/scan-media-files-in-android至于重命名文件。 您应该从库中删除旧文件,然后将新文件添加到库中。 我想这可以帮到你。