【发布时间】:2021-12-24 01:57:07
【问题描述】:
我有以下代码从content provider获取联系人
String[] columns = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID,
ContactsContract.Contacts.PHOTO_ID };
Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI,
columns, null, null, null);
我使用这个来通过他们的 id 获取特定联系人的电子邮件:
Cursor emails = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = " + contact.getContactId(), null, null);
我当前的实现传递游标中的每一行并获取其电子邮件并将它们存储在 java 对象的 arrayList 中。
我想知道是否有可能只是查询内容提供者并返回一个光标,其中仅包含具有 ids/name 等列出了电子邮件地址的联系人。
这种方式获取联系人列表的等待时间较长。我将此列表用于列表适配器。如果我只能获取有电子邮件的联系人,我可以在我的列表中使用光标适配器。
这样的事情可能吗?我怎样才能加快这个过程?
【问题讨论】:
标签: android contacts android-cursor