简介
Android是一个系统,肯定会有类似于Windows的资源管理器,那么Android系统的文件资源管理器是什么呢?它就是MediaStore,MediaStore是Android系统提供的一个多媒体数据库,通过ContentResolver即可对数据库进行操作。
要实现的功能
- 采用链式调用,用Builder模式;
- 支持选择不同类型的文件(指定文件类型,即可显示所有对应的文件);
- 支持只提供数据不提供UI展示(UI可以让使用者自己定制)
- 友好的基础UI展示;
- 友好的权限请求提示;
- 良好的版本兼容性;
相关文章
- [x] Android通用功能封装0——开篇
- [x] Android通用功能封装1——通用工具类封装
- [x] Android 通用功能封装2——图片加载
- [ ] Android 通用功能封装3——文件选择
- [ ] Android 通用功能封装4——文件下载
- [ ] Android 通用功能封装5——网络库封装
- [ ] Android 通用功能封装6——数据库封装
- [ ] Android 通用功能封装7——广播管理
具体实现
具体的文件选择需要分以下几个步骤实现:
- 加载本地文件配置 
- 加载本地文件 
- 本地文件的展示 
- 本地文件的处理 
- 文件选择的交互 
- 选择结果的处理 
MediaStore包含以下几个主要的内部类:
- MediaStore.Files,共享的文件,包括多媒体和非多媒体信息;
- MediaStore.Images,存放图片信息;
- MediaStore.Audio,存放音频信息;
- MediaStore.Video,存放视频信息;
上面每个内部类又包含了
Media、Thumbnails、MediaColumns等,分别提供了媒体信息,缩略信息和 操作字段。
MediaStore中有四张表,分别是:
- video,对应的表字段- {@link MediaStore.Video.VideoColumns}
- audio, 对应的表字段- {@link MediaStore.Audio.AudioColumns}
- image, 对应的表字段- {@link MediaStore.Images.ImageColumns}
- file, 对应的表字段- {@link MediaStore.Files.FileColumns}
注意,由于Android系统在不同的版本对上面四张表有一定的扩展,所以要注意版本的兼容情况,即有的字段只有在一定系统版本的基础上才能获取到。
参考项目
文件选择的基本原理就是通过ContentResolver来进行Android系统多媒体数据库查询,查询得到的具体内容,依赖于组装的查询语句。