项目中下载的图片本地系统相册无法显示

这一段时间做的一个项目中遇到了这个问题,项目中牵扯到了和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"都可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值