У меня есть следующий код для получения контактов от 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);
и я использую этот, чтобы получать электронные письма для определенного контакта по их идентификатору:
Cursor emails = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = " + contact.getContactId(), null, null);
моя текущая реализация пропускает каждую строку в курсоре, получает свои электронные письма и сохраняет их в arrayList объектов java.
что мне было интересно, если это можно было сделать, это просто запросить поставщика контента и вернуть курсор только контактов с идентификаторами / именем и т. Д., Которые имеют адрес электронной почты в списке.
этот способ имеет длительный период ожидания для получения списка контактов. Я использую этот список для адаптера списка. если я могу получить только контакты, у которых есть электронная почта, я могу использовать адаптер курсора в моем списке.
Возможно ли что-то подобное? как я могу ускорить процесс?