1. 程式人生 > >專案中下載的圖片本地系統相簿無法顯示

專案中下載的圖片本地系統相簿無法顯示

這一段時間做的一個專案中遇到了這個問題,專案中牽扯到了和html5互動,從其中下載圖片到本地,但是下載後本地系統相簿無法顯示圖片資料夾和圖片,剛開始以為沒下載下來,就在手機資料夾中檢視,但是有圖片啊,就是無法顯示在本地,後來查詢資料發現是因為下載圖片到本地後,系統相簿沒有掃描,所有無法顯示圖片,在網上查了很多資料,有些可以解決部分手機問題,但是遇到了像華為這一類的或者版本比較高的就無法實現了,但是天無絕人之路,我在一位博主的部落格中看到一個方法,經過測試有效,現在分享給大家,也為以後做一個備份:

package com.fangniu.ssyer;

import android.content.Context;
import 
android.media.MediaScannerConnection; import android.net.Uri; import java.io.File; /** * Created by Administrator on 2017\9\25 0025. */ public class MediaScanner { private static final String TAG = MediaScanner.class.getSimpleName(); private MediaScannerConnection mConn = null; private
SannerClient mClient = null; private File mFile = null; private String mMimeType = null; public MediaScanner(Context context) { if (mClient == null) { mClient = new SannerClient(); } if (mConn == null) { mConn = new MediaScannerConnection(context, mClient
); } } class SannerClient implements MediaScannerConnection.MediaScannerConnectionClient { public void onMediaScannerConnected() { if (mFile == null) { return; } scan(mFile, mMimeType); } public void onScanCompleted(String path, Uri uri) { mConn.disconnect(); } private void scan(File file, String type) { if (file.isFile()) { mConn.scanFile(file.getAbsolutePath(), null); return; } File[] files = file.listFiles(); if (files == null) { return; } for (File f : file.listFiles()) { scan(f, type); } } } public void scanFile(File file, String mimeType) { mFile = file; mMimeType = mimeType; mConn.connect(); } }
初始化MediaScanner,呼叫scanfile方法傳入檔案所在目錄的地址,mimetypt傳入型別,例如"image/*"或者"image/.jpg"都可以