简介
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系统多媒体数据库查询,查询得到的具体内容,依赖于组装的查询语句。