零、前言

[1].顾名思义,内容提供者,目的:实现跨进程间数据共享
[2].基于数据库提供数据
[3].如电话簿,短信,歌曲信息都是以数据库存储存储,都可以通过ContentProvider获取
[4].如果只是想使用的人,直接把静态方法拷贝即可,想知道原理的,图片和注释认真看一下,也可以自己分析一下联系人的表。
[5].本文只打印一下查询结果:RecycleView篇将会界面展示数据,Xml篇将会介绍备份到本地

一、代码实现

1.实体类
/*** 作者:张风捷特烈* 时间:2018/4/18:11:36* 邮箱:1981462002@qq.com* 说明:文件夹实体类*/
public class FolderBean {/*** 当前文件夹路径*/private String dir;/*** 当前文件夹第一个照片的路径*/private String firstImgPath;/****/private String name;/*** 当前文件夹内图片数量*/private int count;public String getDir() {return dir;}public void setDir(String dir) {this.dir = dir;String[] names = this.dir.split("/");this.name = names[names.length - 1];}public String getFirstImgPath() {return firstImgPath;}public void setFirstImgPath(String firstImgPath) {this.firstImgPath = firstImgPath;}public String getName() {return name;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic String toString() {return "FolderBean{" +"dir='" + dir + '\'' +", firstImgPath='" + firstImgPath + '\'' +", name='" + name + '\'' +", count=" + count +'}';}
2.获得所有图片路径的封装方法
/*** 作者:张风捷特烈* 时间:2018/4/14:10:15* 邮箱:1981462002@qq.com* 说明:获取手机,联系人工具类*/
public class PhoneUtils_Picture {/*** 最大图片数量的文件夹图片数*/public static int mMaxCount = 0;/*** 最大图片数量的文件夹*/public static File mMaxCountDir = null;//获取手机的图片///public static List<FolderBean> getAllImagePath(Context ctx) {List<FolderBean> mFolderBeans = new ArrayList<>();//[1]查询获得游标:content://media/external/images/mediaUri mIngUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;ContentResolver resolver = ctx.getContentResolver();Cursor cursor = resolver.query(mIngUri, null,MediaStore.Images.Media.MIME_TYPE + "=? or "+ MediaStore.Images.Media.MIME_TYPE + "=?",new String[]{"image/jpeg", "image/png"},MediaStore.Images.Media.DATE_MODIFIED);//[2]通过游标获取path,创建folderBean对象并赋值//[2-1]为避免重复扫描,将dirPath放入HashSet集合Set<String> mDirPaths = new HashSet<>();while (cursor.moveToNext()) {//获取数据库中图片路径:/storage/emulated/0/DCIM/Camera/IMG20160501152640.jpgString path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));//获取父目录:/storage/emulated/0/DCIM/CameraFile parentFile = new File(path).getParentFile();//没有父目录,跳出本次循环if (parentFile == null) continue;//声明实体对象FolderBean folderBean;//父目录的绝对路径:/storage/emulated/0/DCIM/CameraString dirPath = parentFile.getAbsolutePath();if (mDirPaths.contains(dirPath)) {continue;//集合中有这个目录 跳出本次循环} else {//集合中没有这个目录//加入集合mDirPaths.add(dirPath);//创建实体对象folderBean = new FolderBean();//父文件夹设置到folderBeanfolderBean.setDir(dirPath);//第一张图片路径设置到folderBeanfolderBean.setFirstImgPath(path);}if (parentFile.list() != null) {//根据父文件夹,过滤出所有以jpg,png,jpeg结尾的文件的数量int imgCount = parentFile.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.endsWith(".jpg") || name.endsWith(".png") || name.endsWith(".jpeg");}}).length;if (mMaxCount <= imgCount) {mMaxCount = imgCount;mMaxCountDir = parentFile;}//设置文件夹下图片的数量folderBean.setCount(imgCount);//加入集合mFolderBeans.add(folderBean);}}cursor.close();return mFolderBeans;}
}
3.使用:

注意:查询数据库是耗时操作,为了不阻塞主线程,最好新建个线程操作

new Thread(new Runnable() {@Overridepublic void run() {List<FolderBean> allImagePath = PhoneUtils_Picture.getAllImagePath(MainActivity.this);System.out.println(PhoneUtils_Picture.mMaxCountDir+ "文件夹图片数最多,有" +PhoneUtils_Picture.mMaxCount+"张");for (FolderBean folderBean : allImagePath) {System.out.println(folderBean);}}
}).start();
4.结果:
图片.png

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

3.联系我

QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg

3-AIV--使用ContentProvider获得所有图片路径相关推荐

  1. 图像分类 数据准备(将文件夹中所有图片路径写到TXT文件中)

    0文件夹里都是负样本,1文件夹的图像都是正样本图片,接下来就是生成图片的描述文件. 进入控制台 进入你的0/1文件夹下,输入以下命令: dir /b/s/p/w *.jpg > pos.txt, ...

  2. 2018年终总结(兼个人详历) | 2018 与我的技术之路

    零.前言 2017年标签:"海的彼岸,有我未曾见证的风采" 2018年标签:"海的彼岸,吾在征途" 复制代码 简述: 1).2018年基本上都是在总结Andro ...

  3. JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库

    转载自  JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库 开发环境:struts2+ spring + hibernate 数据库:oracle 需求:在HTML编 ...

  4. python读取多个文件夹图片_python或C++读取指定文件夹下的所有图片

    本文实例为大家分享了python或C++读取指定文件夹下的所有图片,供大家参考,具体内容如下 1.python读取指定文件夹下的所有图片路径和图片文件名 import cv2 from os impo ...

  5. c++上传oss中文路径报错_C# 从Oss对象存储器上下载文件到本地打包下载代码

    [HttpGet][Route("downloadimgszip")]public void downloadimages(string goodsid){//获取所有图片路径Li ...

  6. Android中ContentProvider组件详解

    一.Android四大组件 Android四大组件是Activity, Service, Content Provider,Broadcast Receiver. Activity作为程序界面,直接与 ...

  7. Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容...

    一.什么是ContentProvider? ContentProvider直译过来就是内容提供者,主要作用就是A应用提供接口给B应用调用数据,和之前介绍的sharedPreference和直接开放文件 ...

  8. java+js实现展示本地文件夹下的所有图片demo

    java+js实现展示本地文件夹下的所有图片demo 最近项目遇到需要实现前端通过一个按钮点击事件,弹窗浏览本地文件夹下的所有图片:  思路:  - 获取到所需展示图片的本地文件夹内所有图片的文件绝对 ...

  9. Android Studio 基础 之 简单获取手机端所有图片

    Android Studio 基础 之 简单获取手机端所有图片 目录 Android Studio 基础 之 简单获取手机端所有图片 一.简单介绍 二.实现原理 三.注意实现 四.预览效果 五.实现步 ...

最新文章

  1. 清华构建新一代数据集NICO,定义图像分类新标准
  2. emmet快速缩写展开的基本写法与心得
  3. 过滤器跟拦截器的区别
  4. Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法
  5. redis 启动无输出_深入剖析Redis系列: Redis入门简介与主从搭建
  6. OpenGL之利用模型视图矩阵和投影矩阵让球体自动旋转
  7. 拦截器,过滤器,监听器原理
  8. float js 正则 验证_爬虫篇 | 200 行代码实现一个滑动验证码
  9. windows笔记-【内核对象线程同步】等待函数
  10. 【2019杭电多校第七场1011=HDU6656】Kejin Player(期望dp+递推+逆元)
  11. 【继电器模块的电路设计和分析】
  12. 学数答题160912-导数极值点偏移
  13. python进行谱曲_使用LSTM-GAN为歌词谱曲
  14. 09组团队项目-Beta冲刺-5/5
  15. Cerebral Cortex:基因和环境对大脑功能连接的影响
  16. idea 运行项目显示 Command line is too long. Shorten command line for
  17. 继承Handler还是实现Handler.Callback?
  18. 夜深人静写算法(十五)- 完全背包
  19. cocos 切换精灵图片
  20. 重读GPDB 和 TiDB 论文引发的 HTAP 数据库再思考

热门文章

  1. win7计算机无法最大化,主编教您win7游戏无法全屏怎么办
  2. was 连接池满了怎么重启_HttpClient 连接池设置引发的一次雪崩!
  3. cadence 常见pcb电阻_高速PCB培训手记
  4. java aqua和metal_Java工具集介绍9_16
  5. openssh升级_Redhat 6.5源码编译升级openssh到7.8版本
  6. eclipse linux c开发环境,Eclipse下搭建C/C++开发环境
  7. 保存到本地_不用任何软件工具找回已保存在本地的网页密码
  8. java高端架构_Java高端架构师
  9. sql server 迁移 mysql_sql server 迁移到 mysql
  10. tar解压失败:gzip: stdin: not in gzip format