Android ContentProvider实例详解

本文详细解析了Android的ContentProvider组件,它是Android四大组件之一,用于管理结构化数据并提供统一访问接口。ContentProvider允许不同应用间的数据共享,它可以操作的数据源可以是数据库、文件等。文章介绍了URI的构成、URI模式匹配、MIME类型以及ContentUris和UriMatcher的使用,并通过实例展示了ContentProvider的创建、操作以及如何通过ContentResolver查询数据。
摘要由CSDN通过智能技术生成

新媒体管家

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!


1 ContentProvider是什么?


ContentProvider(内容提供者)是Android的四大组件之一,管理android以结构化方式存放的数据,以相对安全的方式封装数据(表)并且提供简易的处理机制和统一的访问接口供其他程序调用。  

   

Android的数据存储方式总共有五种,分别是:Shared Preferences、网络存储、文件存储、外储存储、SQLite。但一般这些存储都只是在单独的一个应用程序之中达到一个数据的共享,有时候我们需要操作其他应用程序的一些数据,就会用到ContentProvider。而且Android为常见的一些数据提供了默认的ContentProvider(包括音频、视频、图片和通讯录等)。


但注意ContentProvider它也只是一个中间人,真正操作的数据源可能是数据库,也可以是文件、xml或网络等其他存储方式。


2 URL


URL(统一资源标识符)代表要操作的数据,可以用来标识每个ContentProvider,这样你就可以通过指定的URI找到想要的ContentProvider,从中获取或修改数据。 


在Android中URI的格式如下图所示:




  • A:schema,已经由Android所规定为:content://. 

 

  • B:主机名(Authority),是URI的授权部分,是唯一标识符,用来定位ContentProvider。


C部分和D部分:是每个ContentProvider内部的路径部分


  • C:指向一个对象集合,一般用表的名字,如果没有指定D部分,则返回全部记录。


  • D:指向特定的记录,这里表示操作user表id为7的记录。如果要操作user表中id为7的记录的name字段, D部分变为 /7/name即可。


URI模式匹配通配符


*:匹配的任意长度的任何有效字符的字符串。


#:匹配的任意长度的数字字符的字符串。


如:


content://com.example.app.provider/* 

匹配provider的任何内容url


content://com.example.app.provider/table3/# 

匹配table3的所有行


MIME


MIME是指定某个扩展名的文件用一种应用程序来打开,就像你用浏览器查看PDF格式的文件,浏览器会选择合适的应用来打开一样。Android中的工作方式跟HTTP类似,ContentProvider会根据URI来返回MIME类型,ContentProvider会返回一个包含两部分的字符串。MIME类型一般包含两部分,如:


text/html 

text/css 

text/xml 

application/pdf


分为类型和子类型,Android遵循类似的约定来定义MIME类型,每个内容类型的Android MIME类型有两种形式:多条记录(集合)和单条记录。


集合记录:


vnd.android.cursor.dir/自定义


单条记录:


vnd.android.cursor.item/自定义


vnd表示这些类型和子类型具有非标准的、供应商特定的形式。Android中类型已经固定好了,不能更改,只能区别是集合还是单条具体记录࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值