Android中Uri的使用

2014-11-24 11:33:34 来源: 作者: 浏览: 1

1.Uri


通用资源标志符(Universal Resource Identifier, 简称"URI")。


URI一般由三部分组成:


访问资源的命名机制。


存放资源的主机名。


资源自身的名称,由路径表示。


Android的Uri由以下三部分组成: "content://"、数据的路径、标示ID(可选)


举些例子,如:


所有联系人的Uri: content://contacts/people


某个联系人的Uri: content://contacts/people/5


所有图片Uri: content://media/external


某个图片的Uri:content://media/external/images/media/4


我们很经常需要解析Uri,并从Uri中获取数据。


Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris


虽然这两类不是非常重要,但是掌握它们的使用,会便于我们的开发工作。


下面就一起看一下这两个类的作用。


2.UriMatcher


UriMatcher 类主要用于匹配Uri.


使用方法如下。


首先第一步,初始化:


第二步注册需要的Uri:


第三部,与已经注册的Uri进行匹配:


match方法匹配后会返回一个匹配码Code,即在使用注册方法addURI时传入的第三个参数。


上述方法会返回"vnd.android.cursor.dir/person".


总结:


--常量 UriMatcher.NO_MATCH 表示不匹配任何路径的返回码


--# 号为通配符


--* 号为任意字符


另外说一下,官方SDK说明中关于Uri的注册是这样写的:


这个说明估计已经是Google官方没有更新,首先是初始化方法,没有传参,那么现在初始化时,实际是必须传参的。 可以看一下Android2.2的源码,无参数的构造方法已经是private的了。


另外就是addURI这个方法,第二个参数开始时不需要"/", 否则是无法匹配成功的。


3.ContentUris


ContentUris 类用于获取Uri路径后面的ID部分


1)为路径加上ID: withAppendedId(uri, id)


比如有这样一个Uri


通过withAppendedId方法,为该Uri加上ID


最后resultUri为: content://com.yfz.Lesson/people/10


2)从路径中获取ID: parseId(uri)


最后personid 为 :10


附上实验的代码:


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: