4

我想知道在我已经知道行 uri 的情况下是否可以直接在游标(或其他容器)中获取内容提供程序行中存在的数据(换句话说,我已经有了 ContentURIs行 ID 附加)。

插入或 Content Observer OnChange(在 android api 16 上)都会返回插入/更改的 URI,我想有效地从该行获取数据(无需太多查询或指令)。但是,我发现的唯一方法是从 URI 中解析 ID,使用该 id 的选择子句构建查询,然后获取光标,如下所示:

     long row = ContentUris.parseId(uri);
     String mSelectionClause = ContentProvider.Table._ID + " = ?";
     String[] mSelectionArgs = {Long.toString(row)};
     Uri other_uri = Uri.parse(ContentProvider.AUTHORITY_STRING + ContentProvider.UriPathIndex.Table);
     Cursor cursor = cr.query(other_uri ,null,mSelectionClause,mSelectionArgs,null);

还有其他方法吗?我想知道是否可以直接使用行uri

4

1 回答 1

5

引用自http://developer.android.com/guide/topics/providers/content-provider-basics.html#ContentURIs

许多提供程序允许您通过将 ID 值附加到 URI 的末尾来访问表中的单行。例如,要从用户字典中检索 _ID 为 4 的行,可以使用以下内容 URI:

Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);

编辑(来自评论):它适用于所有标准化的内容提供商(至少是谷歌提供的那些)。它适用于所有遵循由基于行的数据存储支持的内容提供者的设计指南的内容提供者。

于 2012-10-26T12:46:40.607 回答