12.1.1. 定义URI

优质
小牛编辑
129浏览
2023-12-01

12.1.1.定义URI

程序内部的不同对象可以通过变量名相互引用,因为它们共享着同一个地址空间。但是不同程序的地址空间是相互隔离的,要引用对方的对象,就需要某种额外的机制。Android对此的解决方案就是全局资源标识符(Uniform Resource Identifier,URI),使用一个字符串来表示Content Provider以及其中资源的位置。每个URI由三或四个部分组成,如下:

URI的各个部分

content://com.marakana.yamba.statusprovider/status/47

A B C D

  • A部分,总是content://,固定不变。
  • B部分,con.marakana.yamba.provider,称作"典据"(authority)。通常是类名,全部小写。这个典据必须与我们在Manifest文件中的声明相匹配。
  • C部分,status,表示对应数据的类型。它可以由任意/分隔的单词组成。
  • D部分,47,表示对应条目的ID,此项可选。如果忽略,则表示数据的整个集合。

有时需要引用整个Content Provider,那就忽略D部分;有时只需要其中一项,那就保留D部分,指明对应的条目。另外我们这里只有一个表,因此C部分是可以省略的。

如下是定义常量:

public static final Uri CONTENT_URI = Uri

.parse("content://com.marakana.yamba7.statusprovider");

public static final String SINGLE_RECORD_MIME_TYPE =

"vnd.android.cursor.item/vnd.marakana.yamba.status";

public static final String MULTIPLE_RECORDS_MIME_TYPE =

"vnd.android.cursor.dir/vnd.marakana.yamba.mstatus";

关于这两个MIME类型,我们将在后面“获取数据类型”一节中详细讨论。还要在类里定义一个statusData对象,方便以后引用它。

StatusData statusData;

加入这个statusData对象,是因为数据库的访问都统一到了StatusProvider这个类中。