Android中URI的格式

在Android中,为了使用数据集中管理模式,使用了ContentProvider来进行数据管理,在使用ContentProvider进行 数据交互时就需要用到URI。为了让客户端程序能够使用你的数据,你必须要定义一个公开的URI,它由一些固定格式的文字组成,可以分成下面几个部分:

content://

一个标准的URI前缀,它用来指示Android必须从ContentProvider中挑出一个来处理这个URI。

authority

一个唯一的标识符,标示这个URI需要查找的ContentProvider是由哪个组织开发的,一般用跟java包命名规范相似的方式来署名这个 开发组织。如果是Android内置的provider,则这个authority可以省略掉,否则authority是必须的,Google建议使用用 户自定义的继承ContentProvider的类的全名来作为,这个ContentProvider所要处理的URI的authority

path(路径)

ContentProvider根据这个路径信息来判断要返回什么类型的数据,所以这个后缀路径可以自由定义,但是有一些条件限制:货运专家

如果一个ContentProvider能查询返回很多种不同类型的数据,URI后缀要设置不同类型的数据所对应不同的URI后缀如内置的 Contact ContentProvider就是用来处理名片夹,它可以返回很多种类型的数据:联系人、电话、联系方式等。所以对应这些不同类型的数据就有不同的 URI后缀匹配:

1
content://contacts/people/1

上面是返回一个人员

1
content://contacts/people/1/phone/3

返回一个电话号码。

而且我们要为不同的数据类型设置不同的MIME类型,第一个MIME类型是:vnd.android.cursor.item/person第二个MIME类型是:vnd.android.cursor.item/phone。

同时ContentProvider不仅可以返回单条数据,也可能以目录的形式返回多条数据。以上面2个URI来说,后缀的结尾都是数字,这表示查询对应某条记录,所以返回的数据是单条的,而如果是查询目录的形式就要去掉后面的数字如:软件开发

1
2
content://contacts/people/1/phone
content://contacts/people

上面就是目录形式,对应他们的MIME类型也不同,所以我们将单条的MIME类型中的item改为dir,所以MIME类型是:vnd.android.cursor.dir/phone和vnd.android.cursor.dir/person。


A: 标准前缀,表达的意思是使用ContentProvider来处理信息。

B: authority

C: 后缀1,一般用来表示请求需要获取的是哪种类型的数据(确定MIME类型的功能)。

D:定位记录。确定对应类型的数据中的哪条记录。

posted @ 2011-08-17 09:47  ctou45  阅读(1025)  评论(0编辑  收藏  举报