刷新媒体库的几种方式

操作MediaStore

/**
 * 向 MediaStore 中插入图片数据,并产生一个缩略图
 * 不需要指定路径,会自动将图片保存至 Picture 目录下
 */
public static void MediaStore.Image.Media.insertImage(
    ContentResolver cr, Bitmap source, String title, String description)
    
/**
 * 向 MediaStore 中插入图片数据,并产生一个缩略图
 * 指定路径,会保存图片到指定路径,并复制一份保存至 Picture 目录下,不推荐
 */
public static void MediaStore.Image.Media.insertImage(
    ContentResolver cr, String imagePath, String name, String description)

发送广播

在Android 4.4之前可以使用`ACTION_MEDIA_MOUNTED`来刷新,但是在Android 4.4之后该广播只可以由系统进行广播,App只能进行监听,因此改为用`ACTION_MEDIA_SCANNER_SCAN_FILE`来刷新媒体库

添加后刷新

String path = "文件绝对路径";
String uri = Uri.fromFile(new File(path));
// 或者String uri = Uri.parse(path);
// 或者String uri = new File(path).toURI().toString;
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
sendBroadcast(intent);

注意这里的uri必须以Environment.getExternalStorageDirectory()的返回值开头。

删除后刷新
不能像添加时的操作去刷新,因为源码中判断了文件路径为空或无效则返回,因此使用ContentResolver来进行刷新:

contentResolver.delete(Images.Media.EXTERNAL_CONTENT_URL,
    Images.Media.DATA + "=?", new String[]{file.getAbsolutePath()});

操作MediaScannerConnection类

/**
 * 可传递多个路径,MimeType必填,且不能为通配符*/*或null
 */
MediaScannerConnection.scanFile(Context context, String[] paths, 
    String[] mimeTypes, OnScanCompleteListener callback)



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值