Android 内容提供器---内容提供器基础(内容的统一资源标识(URIs))
内容URI是在提供器中标识数据统一资源标识。内容的统一资源标识包括完整的提供器的符号名和所指向的一个表名。当你调用一个客户端方法来访问提供器中的一个表时,这个表的内容的统一资源标识就应该是参数之一。
在前面的代码行中,常量CONTENT_URI包含了用户字典的“words”表的统一资源标识。ContentResolver对象分析出URI的授权,并且使用这个授权跟已知的系统表的授权进行比较来找到内容的提供者,然后ContentResolver对象就能够把查询参数分发给正确的提供者。
ContentProvider对象是内容统一资源标识的路径部分来选择要访问的表。通常提供器对每个表都会公开一个路径。
在前面的代码行中,“words”表的完整URI是:
content://user_dictionary/words
user_dictionary字符串是提供器的授权位置,而words字符串是表的路径。字符串content://(方案)总是固定的,标识这是一个内容统一资源标识。
许多提供器允许你通过在URI的尾部添加一个ID值来访问表中的单行。例如,要从用户字典中获取_ID是4的那行数据,可以使用以下这样的内容URI:
Uri singleUri = ContentUri.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
在获取想要更新或删除的行集时,经常要使用ID的值。
注意:Uri和Uri.Builder类为用字符串构造具有良好格式的Uri提供了便利方法。ContentUris类给URI添加一个ID值提供了便利的方法。前面的代码片段中就使用了withAppendedId()方法给用户字典的内容URI添加了一个ID值。