我有以下代码可以从中获取联系人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 中。
我想知道是否有可能只是查询内容提供者并返回一个光标,其中只有带有 ID/姓名等的联系人,其中列出了电子邮件地址。
这种方式获取联系人列表的等待时间很长。我正在将此列表用于列表适配器。如果我只能得到有电子邮件的联系人,我可以在我的列表中使用光标适配器。
这样的事情可能吗?我怎样才能加快这个过程?