问题背景:

參考链接 做了一个图片浏览,用ContentResolver扫描图库照片。且严格依照时间拍摄顺序排好序显示在listview里。例如以下图所看到的:

遇到的问题是在4.2的手机上能正常显示,可是新增了照片,这个扫描依然么变化。实在是恼火。还有一个严重的问题是,在4.4的手机上,一张图片都跑不起来。

大爷的,真是坑爹到家了。浪费我好几个小时。后来差点儿要放弃了,无意中浏览自己曾经写的博客,才发现真正的原因是少了一个权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

须要有以下两个权限。才干在发广播更新时起到作用。

尤其是第二个权限。没这个权限在4.2的手机上能够浏览但不会更新,在4.4全然扫描不到图片。

但奇怪的是二种情况下都不会报异常。

查询的关键语句是:

                Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;Log.i("yanguoqi", "mImageUri = " + mImageUri.getPath());ContentResolver mContentResolver = MainActivity.this.getContentResolver();//仅仅查询jpeg的图片Cursor mCursor = mContentResolver.query(mImageUri, null,MediaStore.Images.Media.MIME_TYPE + "=?",new String[] { "image/jpeg"}, MediaStore.Images.Media.DATE_TAKEN);mCursor.moveToLast();int num = mCursor.getCount();do{//获取图片的路径String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA));if(path.contains("/DCIM/Camera")){imgPaths.add(path);}}while (mCursor.moveToPrevious());mCursor.close();

1、查询时mContentResolver.query(mImageUri。。。

)这个uri仅仅能填写Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;构造出来的URI。而不能随便写个路径构造个URI,这块着实诡异;

2、所以为了过滤。仅仅能扫描后通过if(path.contains("/DCIM/Camera"))这句话来过滤图库以下的文件;

3.为了实现严格依照拍照时间排序,光在查询里写MediaStore.Images.Media.DATE_TAKEN还不中。这么写查出来的cursor第一个确实是最新的。可是通过List.add操作。反而把第一个排到最后了。因此我先将cursor移动最后,之所以do在前面while在后,是为了不漏掉第一个图片。

4、每次查询前,应该发广播更新下:

  private void updateGallery(){Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);   //, MediaStore.Images.Media.EXTERNAL_CONTENT_URIString path = Environment.getExternalStorageDirectory() + "/DCIM/Camera"; Uri uri = Uri.fromFile(new File(path));   intent.setData(uri);   this.sendBroadcast(intent);  }

在发广播处,能够指定path路径的uri,当然也能够传

 MediaStore.Images.Media.EXTERNAL_CONTENT_URI

转载于:https://www.cnblogs.com/mqxnongmin/p/10658139.html

Android4.4 ContentResolver查询图片无效 及 图库删除 添加图片后,ContentResolver不更新的问题解决...相关推荐

  1. java web工程中如何添加图片_java web中如何添加图片

    java web中如何添加图片 对于java可视化界面插入背景图片只需要background-image:url(图片路径)就行,而对于web项目中,并非如此 效果如下: 我们就需要在jsp页面中写J ...

  2. android 固定比例图片裁剪插件,移动端添加图片裁剪的坑

    本文关键:阻止冒泡.canvas压缩.canvas裁剪.生成黑色图片. 最近项目需要在添加图片时实现裁剪功能,虽然 github 上开源的裁剪插件不少,试了好几个插件,在移动端体验好的寥寥无几.躺了几 ...

  3. PHP实现给视频加图片水印,怎么在视频画面上加图片?如何给视频添加自己的图片作为水印?视频添加图片水印的方法...

    今天就是周一啦,昨天周末大家有没有跟好友去玩呢~反正小编是跟同学聚会去了,聚会主题:胖.哈哈哈,不过小编可不跟他们一样只会长胖,小编可是瘦瘦瘦的呢,偷偷的告诉你们,小编减肥瘦了三十斤哦,嘻嘻.好啦,废 ...

  4. Win11如何添加图片3D效果?Win11添加图片3D效果的方法

    ​Windows11系统为用户更新了很多丰富且有趣的功能,而为图片添加一个3D效果也是其中一个功能,该功能可以为用户的图片带来不一样的变化,但很多小伙伴不清楚要如何去添加,那么要如何操作呢?下面就和小 ...

  5. php 图片填充图片,PHP水印类,支持添加图片、文字、填充颜色区域的实现_php实例...

    下面小编就为大家带来一篇PHP水印类,支持添加图片.文字.填充颜色区域的实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 *自己整理的一个水印类* 支持添加图片.文字 ...

  6. ios html富文本带图片,iOS 富文本文字添加图片

    如图:标题前面添加海外直邮和跨境保税,iOS最好使用富文本添加图片附件的方法 NSTextAttachment*textAttachment = [[NSTextAttachment alloc] i ...

  7. mysql添加索引后查询先用索引吗_mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?...

    满意答案 llt1711 2014.06.20 采纳率:49%    等级:9 已帮助:614人 MYSQL创建索引对索引使用方式分两种: 1 由数据库查询优化器自动判断否使用索引: 2 用户写SQL ...

  8. Java接收并上传图片至S3,返回图片URL,并删除本地图片

    Java将图片上传至S3,一般前端页面上传过来的图片,在后端接收形式都为MultipartFile,而S3不支持MultipartFile形式的文件,只支持File类型,所以需要先转换类型再上传.注意 ...

  9. java轮播添加图片_给网站首页添加图片轮播的效果

    网站的首页有图片轮播的效果,可以很好的起到广告的作用也可以起到推荐优秀内容的作用. 可是一般的建站程序,首页的幻灯片效果都很一般不是很好看,有的时候就需要我们自己改一下代码. 太复杂的代码自己改不好, ...

最新文章

  1. 去掉主页 breadcrumb导航条上的Liferay字样
  2. Python基础训练题-简单数学公式
  3. CM: How is attachment version implemented
  4. java api文档_细说API – 文档和前后端协作
  5. matlab矩阵内存预分配
  6. CSS3动画之一:Transitions功能
  7. java http上传文件到_java使用http往服务器上传文件(图片)
  8. 钱少事多,开源项目维护人员几乎集体出走
  9. java6和java7的区别_Java String的intern方法 在JDK6和JDK7的不同行为
  10. Apizza 在线Api接口测试工具
  11. 华为服务器麒麟系统,麒麟服务器
  12. 跨步电压 matlab仿真,跨步电压,跨步电压触电,跨步电压法,论文集锦_发表网
  13. DatePickerDialog的确定和取消按钮
  14. ajax传参中文乱码问题解决
  15. 一款好用的WEB版报表工具、报表设计器
  16. matlab 投票法_二维解析张量投票算法研究
  17. __builtin_函数
  18. 人工智能入门算法逻辑回归学习笔记
  19. 【笔记整理 - 操作系统】(时间较早)
  20. 装几只“加密狗”都无妨:活用打印机共享器

热门文章

  1. IOS开发之coreData
  2. 基本算法--希尔排序
  3. 003、关于Integer.valueOf(sss)与Integer.parseInt(sss)性能
  4. Chef是一个什么样的工具
  5. 创新工场CE0李开复:互联网创业黄金时代来临
  6. 笔试题:计算N的阶乘
  7. Kotlin 系列(二) 基本语法(1)
  8. ubuntu的xfce4的display只有一种分辨率选项
  9. Flink DDL的java代碼中的DeserializationSchemaFactory與TableSourceFactory報錯解決方案記錄彙總
  10. 关于hive数仓这个概念的一些理解+查看hive底层引擎是否是tez