【发布时间】:2015-08-27 07:25:39
【问题描述】:
我正在尝试:
- 显示联系人列表
- 让用户通过键入查询来搜索它们
- 将搜索结果仅限于特定的 Google/Gmail 帐户。
这就是我为光标构建 URI 的方式:
// User is searching for 'jo'
String query = "jo";
Uri uri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI, Uri.encode(query));
// Restrict the query to contacts from 'example@gmail.com'
Uri.Builder builder = uri.buildUpon();
builder.appendQueryParameter(
ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(ContactsContract.Directory.DEFAULT));
builder.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_NAME, "example@gmail.com");
builder.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.google");
uri = builder.build();
这是最终的 URI:
content://com.android.contacts/contacts/filter/jo?directory=0&account_name=example%40gmail.com&account_type=com.google
目前,这会显示手机上所有帐户的搜索结果。
注意:如果我使用 Contacts.CONTENT_URI 而不是 Contacts.CONTENT_FILTER_URI,则指定目录/帐户会按预期工作,但我不能再使用“类型过滤”样式搜索。
documentation 确实声明:
目录最重要的用例是搜索。目录 提供商预计至少支持
Contacts.CONTENT_FILTER_URI。
谁能帮忙指出我做错了什么?
【问题讨论】:
标签: android android-contentprovider android-contacts contactscontract