【问题标题】:Thumbnail isn't refresh immediately缩略图不会立即刷新
【发布时间】:2013-08-07 03:26:35
【问题描述】:

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

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

我找到了一段代码刷新MediaStore

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

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

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

【问题讨论】:

  • 在一个线程中给出它......

标签: android thumbnails mediastore


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在 Android 中更新特定图像的推荐方法是使用 ACTION_MEDIA_SCANNER_SCAN_FILE Intent。为了更流畅

    您可以在 Android 开发者网站的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,如果返回的缩略图为 null,则使用 ThumbnailUtilsBitmapFactory 生成您自己的缩略图。

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

    【讨论】:

      【解决方案3】:

      您是否尝试过直接对要更改的目录进行扫描?所以不是

      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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-13
          • 2014-02-13
          • 2023-03-30
          • 2014-08-24
          • 1970-01-01
          • 2012-08-03
          • 1970-01-01
          • 2017-07-22
          相关资源
          最近更新 更多