2013-08-06 71 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