一旦您拥有ROW URI,从内容提供商中获取数据的正确方法是什么?



我想知道是否可以在我已经知道ROW URI的情况下直接在光标(或其他容器)中获取内容的数据(或其他容器)(或其他容器)(换句话说,我已经有contenturis附加了行ID)。

插入或内容观察者的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);

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

摘自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);

编辑(来自评论):它适用于所有标准化内容提供商(至少由Google提供的提供商)。它将适用于所有内容提供商遵循设计指南的内容提供商,该指南为由基于行的数据存储提供支持的内容提供商。

最新更新