内容uri一般是这种格式
content://provider/product/1
是否可以让 contenturi 接受这样的 uri
content://provider/product/p1
id 可以是字符串吗?
我正在尝试使用 ContentUris.withAppendedId(contentUri,id)
。这个 id 似乎是 long 类型。
最佳答案
问题很可能出在您定义 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 以针对任何一种情况查询正确的字段。
关于android - ContentUri 的 id 格式为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16754443/