四大组件之ContentProvider 第2节 使用ContentProvider

更新时间 修改意见
2016-08-02 陈敏

第2节 使用ContentProvider

安卓系统上,提供了很多系统级的ContentProvider,我们可以直接使用。例如,

  1. Media Provider:用来查询磁盘上多媒体文件;
  2. Contacts Provider:用来查询联系人信息;
  3. Calendar Provider:用来提供日历相关信息的查询;
  4. Bookmark Provider:用来提供书签信息的查询;

它们的用法大同小异,只要使用它们对应的Uri地址就可以进行增删改查的操作了。

这里我们就用Media Provider来讲解。

2.1 MediaProvider

Media Provider作为系统级别的应用程序在系统上运行,专门负责收集多媒体文件(音频、视频、文件)相关的信息。

Media Provider在开机启动后,会在后台“监听”磁盘上文件的变化,特定情况下,会自动更新媒体文件的信息,例如磁盘上是否增加了媒体文件,是否被删除了媒体文件,有的媒体文件名称是否发生了修改等等。

所以当任何应用想获取这类文件相关的信息时,就可以向Media Provider发起查询的请求。Media Provider帮我们完成了媒体文件信息的收集。因此,当我们要查询磁盘上的多媒体信息时,就不用自己去遍历磁盘上的文件进行收集和整理了。

2.2 Media Provider查询视频文件

  1. 确定向Media Provider发出查询请求的地址-uri,我们要查询的视频文件都是存放在外部存储地址上的,就使用指向外部存储的uri;

  2. 确定要请求的视频文件信息。我们需要查询视频的标题、创建时间,还需要播放它时使用的文件所在地址。这些信息在Media Provider中都对应着查询它们使用的字段名称;

  3. 确定查询的条件。这个条件参数的写法就和SQL数据库语言的语法一样。这里我们不打算讲SQL语法,需要各位自己去学习了;设置成空,表示查询所有数据项,

  4. 设定查询结果的排序方式,使用默认的排序方式就可以了,

  5. 获取ContentResolver对象,让它使用前面的参数向Media Provider发起查询请求;查询的结果存放在Cursor--游标当中;

  6. 遍历Cursor,得到它指向的每一条查询到的信息;当Cursor指向某条数据的时候,我们就获取它携带的每个字段的值;

  7. Cursor使用完了之后要把它关闭掉,


整理一下前面的各个步骤,获取外部存储上的视频资源,方式如下,

最后一点千万不要忘记,因为视频文件存放在外部存储器中,所以要在应用的AndroidManifest.xml文件中,添加读取外部存储器的权限,


/**************************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。
/
**************************************************************************/