2

内容uri一般是这种格式

content://provider/product/1

可以让 contenturi 接受这样的 uri

content://provider/product/p1

id 可以是字符串吗?我正在尝试使用ContentUris.withAppendedId(contentUri,id). 这个 id 似乎是 long 类型。

4

1 回答 1

0

问题很可能出在您定义 UriMatcher 的方式上。

您可能正在为该 uri 和以“#”结尾的表使用模式匹配器,因此它正在寻找一个数字。

只需添加另一个与您已经拥有的完全一样的匹配器模式,但将“#”更改为“*”,这样它也将匹配字符串。

这是我使用的一个示例,其中我的表同时具有 _id 列和 device_id 列。device_id 列有一个 NOT NULL 和 UNIQUE 约束并保存 UUID。两列中的任何一列都可以用作行标识符。

sUriMatcher.addURI(AUTHORITY, DevicesTable.TABLE_NAME + "/#", DEVICE); sUriMatcher.addURI(AUTHORITY, DevicesTable.TABLE_NAME + "/*", DEVICE);

有了这个,你可以调用 Uri.withAppendedPath(uri, _id); 或 URi.withAppendedPath(uri, uuid); 匹配器会找到正确的表。

只要确保调整您的 ContentProvider 以针对任何一种情况查询正确的字段。

于 2017-06-10T17:03:02.357 回答