2010-08-27 18 views
0

J'ai configuré 2 contacts de test dans mon émulateur.Android; Je n'ai que 2 contacts, mais je peux en obtenir 5 à partir d'une requête, pourquoi?

Je cours la requête suivante, il devrait les choisir tous les deux, peupler mon objet de domaine, et ajouter à une liste. La sortie en bas devrait donc être 2, mais c'est 5, pourquoi est-ce? (Cursor.getCount() est de 5 au lieu de 2)

j'étagé à travers chaque itération de la boucle de temps et il est retreving le même contact à plusieurs reprises, mais avec des valeurs différentes pour POSTCODE, telles que le numéro de téléphone

Répondre

1

Vous interrogez ContactsContract.Data, qui est un conteneur générique contenant une liste de différents détails de contact, tels que les numéros de téléphone, les codes postaux, etc. Vous devez filtrer les résultats pour les lignes dont ContactsContract.Data.MIMETYPE column est égal à StructuredPostal.CONTENT_ITEM_TYPE:

Alors, remplacez la requête par:

Cursor cursor = cr.query(ContactsContract.Data.CONTENT_URI, 
    null, null, ContacsContract.Data.MIMETYPE + "='" + 
ContactsContract.StructuredPostal.CONTENT_ITEM_TYPE + "'", null); 

Voir ContactsContract.Data

0

un contact qui est enregistré à plusieurs groupes sera affiché plusieurs fois si vous interrogez la Uri CONTENT_URI = ContactsContract.Data.CONTENT_URI

Ajouter à votre SELECTION:

+ ContactsContract.Data.DATA1 + " = 1 " ; //show only contacts in group 1