你以为数据共享只能靠Intent?ContentProvider笑而不语,而URI才是真正的通关密码。
01 快递公司与收货地址:ContentProvider与URI的奇妙比喻
在Android王国里,每个应用都是一个独立的城堡,城堡之间想要传递货物,不能随便翻墙,必须通过官方认证的“快递公司”——ContentProvider。
那么问题来了,快递员怎么知道把包裹送到哪里呢?这就需要“收货地址”——URI(Uniform Resource Identifier,统一资源标识符)。
URI是ContentProvider的灵魂,它唯一标识了ContentProvider中的数据集。没有URI,数据共享就像没有地址的快递,永远找不到目的地。
来看看URI的神秘结构吧:
content://cn.itcast.provider.personprovider/person/10
这个URI就像是一个分层地址:content://是Android规定的协议头,表示这个资源由ContentProvider管理。
cn.itcast.provider.personprovider是授权(authority)部分,它是ContentProvider的唯一身份证,一般用ContentProvider所在package的完全限定名称。
person/10是路径(path)部分,指向具体的资源——可能是数据库中的表,甚至是表中的特定记录。
02 URI的深度解析:不只是“地址”那么简单
URI在Android数据共享中扮演着路由导航的角色,它告诉系统:“我要找的是这个ContentProvider,那张表,那条记录。”
URI的标准化结构
一个标准的URI包含几个关键部分:
- Scheme:永远是
content://,这是Android的约定 - Authority:ContentProvider的唯一标识,在AndroidManifest.xml中注册时指定
- Path:资源路径,可以指向表或记录
- Id:可选部分,表示特定记录的ID
通配符:让URI更灵活
URI还支持通配符,让数据操作更加灵活:
*:匹配任意长度的任何有效字符的字符串#:匹配任意长度的数字字符的字符串
例如,content://com.example.app.provider/*匹配该provider的任何内容,而content://com.example.app.provider/table/#匹配table表的所有行。
MIME类型:URI的“身份证”
除了URI本身,ContentProvider还会为每个

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



