Android получает курсор только для контактов, для которых указан адрес электронной почты> android 2.0

У меня есть следующий код для получения контактов от контент-провайдера

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-объектов.

мне было интересно, возможно ли это сделать, это просто запросить поставщика контента и вернуть курсор просто контакты с идентификаторами / именем и т. д., в которых указан адрес электронной почты.

этот способ имеет длительный период ожидания для получения списка контактов. Я использую этот список для адаптера списка. если я могу получить только контакты, у которых есть электронная почта, я могу использовать адаптер курсора в моем списке.

Возможно ли что-то подобное? как я могу ускорить процесс?

15
задан Kyle Trauberman 11 November 2011 в 05:22
поделиться