我没有在Android内容提供商中获得uris的概念。我的数据库由三个表组成。我实际上从不查询单个表,而是需要使用关节来获取所需数据。现在我的桌子是A,B,C。
private static final String AUTHORITY = "com.example.database.contentprovider";
// uri for each table
public static final Uri CONTENT_URI_A = Uri.parse("content://" + AUTHORITY + "/" + A.TABLE_NAME);
public static final Uri CONTENT_URI_B = Uri.parse("content://" + AUTHORITY + "/" + B.TABLE_NAME);
public static final Uri CONTENT_URI_C = Uri.parse("content://" + AUTHORITY + "/" + C.TABLE_NAME);
答案 0 :(得分:1)
内容URI只是与特定查询关联的唯一字符串uri - 它们不需要与基础表结构相关。
URI的"content://" + AUTHORITY + "/"
部分通过使用您的应用程序独有的AUTHORITY来尝试确保字符串是唯一的(即,它们不会与其他应用程序冲突)。
它们有两个主要目的:
query
,update
,insert
和delete
来电,轻松区分不同的查询(当然,您可以使用selection
, projection
或其他参数来执行此操作,但通常使用UriMatcher更容易快速解析URI Cursor
上致电Cursor.setNotificationUri,{{1}}会在调用ContentResolver.notifyChange(uri, null)时自动重新查询数据(即在您的插入/更新/删除调用中)。当基础数据发生变化时,使用Loader Framework和CursorLoader自动接收回调时,此功能特别有用。