Android ContentUri';id的s格式为字符串

Android ContentUri';id的s格式为字符串,android,android-contentprovider,Android,Android Contentprovider,内容uri通常采用这种格式 content://provider/product/1 contenturi可以接受这样的uri吗 content://provider/product/p1 id可以是字符串吗? 我正在尝试使用ContentUris.withAppendedId(contentUri,id)。此id的类型似乎很长。问题很可能是您定义UriMatcher的方式 您可能正在为uri和以“#”结尾的表使用模式匹配器,因此它正在查找一个数字 只需添加另一个与已有匹配器模式完全相同的匹

内容uri通常采用这种格式

content://provider/product/1
contenturi可以接受这样的uri吗

content://provider/product/p1
id可以是字符串吗?
我正在尝试使用
ContentUris.withAppendedId(contentUri,id)
。此id的类型似乎很长。

问题很可能是您定义UriMatcher的方式

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

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

下面是我使用的一个示例,其中我的表既有and _id列,也有一个device _id列。device_id列具有NOTNULL和UNIQUE约束,并持有UUID。这两列中的任何一列都可以用作行标识符

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

有了它,您可以调用任意一个Uri.withAppendedPath(Uri,_id);或者URi.withAppendedPath(URi,uuid);匹配者会找到合适的桌子

只需确保调整ContentProvider以查询两种情况下的正确字段。

我使用Uri.withAppendedPath(Uri,'p1')创建Uri。那会是个问题吗?