Android obtient un curseur uniquement avec les contacts qui ont un email répertorié & gt; android 2.0

j'ai le code suivant pour obtenir les contacts de 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);

et j'utilise celui-ci pour obtenir les e-mails pour un contact spécifique par leur id:

Cursor emails = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID
                            + " = " + contact.getContactId(), null, null);

mon actuel de mise en œuvre de passe à chaque ligne du curseur et acquiert ses e-mails et les stocke dans une arrayList d'objets java.

ce que je me demandais si il était possible de faire, c'est juste de la requête, le fournisseur de contenu et le retour d'un curseur de juste des contacts avec des id/nom, etc ... qui ont une adresse de courriel indiquée.

de cette manière a une longue période d'attente pour obtenir la liste des contacts. je suis l'aide de cette liste pour une liste de l'adaptateur. si je peux obtenir uniquement les contacts qui ont un e-mail je peux utiliser un curseur de l'adaptateur dans ma liste.

Est quelque chose comme cela possible? comment puis-je accélérer le processus?

source d'informationauteur DArkO