Android 通用功能封装3——文件选择

http://rainmonth.github.io/posts/A21020r.html

简介

Android是一个系统,肯定会有类似于Windows的资源管理器,那么Android系统的文件资源管理器是什么呢?它就是MediaStoreMediaStore是Android系统提供的一个多媒体数据库,通过ContentResolver即可对数据库进行操作。

要实现的功能

  1. 采用链式调用,用Builder模式;
  2. 支持选择不同类型的文件(指定文件类型,即可显示所有对应的文件);
  3. 支持只提供数据不提供UI展示(UI可以让使用者自己定制)
  4. 友好的基础UI展示;
  5. 友好的权限请求提示;
  6. 良好的版本兼容性;

相关文章

具体实现

具体的文件选择需要分以下几个步骤实现:

  • 加载本地文件配置

  • 加载本地文件

  • 本地文件的展示

  • 本地文件的处理

  • 文件选择的交互

  • 选择结果的处理

MediaStore包含以下几个主要的内部类:

  • MediaStore.Files,共享的文件,包括多媒体和非多媒体信息;
  • MediaStore.Images,存放图片信息;
  • MediaStore.Audio,存放音频信息;
  • MediaStore.Video,存放视频信息;

上面每个内部类又包含了MediaThumbnailsMediaColumns等,分别提供了媒体信息,缩略信息和 操作字段。

MediaStore中有四张表,分别是:

  • video,对应的表字段{@link MediaStore.Video.VideoColumns}
  • audio, 对应的表字段{@link MediaStore.Audio.AudioColumns}
  • image, 对应的表字段{@link MediaStore.Images.ImageColumns}
  • file, 对应的表字段{@link MediaStore.Files.FileColumns}

注意,由于Android系统在不同的版本对上面四张表有一定的扩展,所以要注意版本的兼容情况,即有的字段只有在一定系统版本的基础上才能获取到。

参考项目

文件选择的基本原理就是通过ContentResolver来进行Android系统多媒体数据库查询,查询得到的具体内容,依赖于组装的查询语句。