内容uri通常采用这种格式
content://provider/product/1
可以使contenturi接受这样的uri
content://provider/product/p1
可以是字符串吗?
我正在尝试使用ContentUris.withAppendedId(contentUri,id)
。这个id似乎是类型很长。
答案 0 :(得分:0)
问题最可能在于您定义UriMatcher的方式。
你可能正在使用一个模式匹配器来表示那个以“#”结尾的uri和table,所以它正在寻找一个数字。
只需添加另一个与您已有的匹配模式,但将“#”更改为“*”,以便它也匹配字符串。
这是我使用的示例,其中我的表同时具有_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以查询任何一种情况的正确字段。