android - ContentUri 的 id 格式为字符串

标签 android android-contentprovider

内容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/

相关文章:

android - EasyTracker 和普通Tracker 有什么区别?

android - 未经许可读取联系人?

android - 在以编程方式将新联系人插入到 android 中的手机时获取 ContactId

android - SyncAdapter 用于检测设备 native 联系人列表中的更改

android - EditText 的 ActionNext 不适用于 Fling/快速滚动

Android:切换 fragment 后按钮 onClicklistener 不起作用

Javascript 界面与 android 不工作

android - 离开助手类时关闭进度对话框

android - "Contacts"是否可通过模拟器获得?

Android:内容提供商最佳实践