ContentUri的id格式为字符串

时间:2013-05-25 22:22:50

标签: android android-contentprovider

内容uri通常采用这种格式

content://provider/product/1

可以使contenturi接受这样的uri

content://provider/product/p1

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

1 个答案:

答案 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以查询任何一种情况的正确字段。