我正在尝试了解Android REST风格的ContentProvider URI。假设我有一个消息数据库,每个消息都有一个“_id”和“recipient”字段(以及其他字段)。
我了解如何获取所有消息的所有列:
// Get all messages.
URI uri = Uri.parse("content://" + AUTHORITY + "/messages");
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
我理解如何使用_id为1来获取消息:
// Get the message with _id 1.
URI uri = Uri.parse("content://" + AUTHORITY + "/messages/1");
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
如果我想获取收件人值为foo@bar.com的邮件怎么办?
// Get the messages with recipient "foo@bar.com"
URI uri = Uri.parse("content://" + AUTHORITY + ??); // What goes here?
Cursor cursor = getContentResolver().query(uri, null,
"recipient = ?", "foo@bar.com", null);
如果风格更好,我很乐意在URI中传递收件人值:
// Get the messages with recipient "foo@bar.com"/
URI uri = Uri.parse("content://" + AUTHORITY + ?? + "foo@bar.com"); // What goes here?
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
对于最后一个用例,首选的URI格式是什么?
更新:我是ContentProvider和客户端的作者,所以我可以使用我想要的任何格式。我仍然想知道什么是最佳实践
答案 0 :(得分:2)
在最后一种情况下,URI中的AUTHORITY之后应该怎么做?
无论你想要什么。如果您正在编写ContentProvider
,则由您来定义Uri
语法对权限右侧的路径段的含义。
在您的情况下,您通过查询参数传递值(foo@bar.com
)。因此,您的??
可以是:
messages
asrasiojdflkasdjkl90238490qa89dsfjlas
或其他随机字符串