Android之ContentProvider(二):Uri对象的内容URI

不同于SQLiteDatabase,ContentResolver中的增删改查方法都是不接收表名参数的,而是使用一个Uri参数代替,这个参数被称为内容URI。
内容URI
内容URI给内容提供器中的数据建立了唯一标识符。它主要由两部分组成,权限(authority)和路径(path)。权限是用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名。比如某个程序的包名是com.example.app,那么该程序对应的权限就可以命名为com.example.app.provider。路径则是用于对同一应用程序中不同的表做区分的,通常都会添加到权限的后面。比如某个程序的数据库里存在两张表,table1和table2,这时就可以将路径分别命名为/table1和/table2。还需要在字符串的头部加上协议声明。
内容URI最标准的格式写法如下:

content://com.example.app.provider/table1
content://com.example.app.provider/table2

内容URI的格式
以路径结尾表示期望访问该表中所有的数据。

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

以id结尾就表示期望访问该表中拥有相应id的数据。

content://com.example.app.provider/table1/1

使用通配符
可以使用通配符的方式来分别匹配这两种格式的内容URI,规则如下:
1. *:表示匹配任意长度的任意字符
2. #:表示匹配任意长度的数字
所以,一个能够匹配任意表的内容URI格式就可以写成:

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

而一个能够匹配table1表中任意一行数据的内容URI格式就可以写成:

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

解析成Uri对象

Uri uri = Uri.parse("content://com.example.app.provider/table1")

调用Uri.parse()方法将内容URI字符串解析成Uri对象。

你可能感兴趣的:(Android)