2016-12-05 2 views
1

Je dois lire tous les contacts appartenant à un compte spécifique et les trier par leur nom.Comment puis-je trier RawContacts par leur nom d'affichage?

Et je voudrais les faire trier dans le Cursor plutôt que de les trier après dans un tableau.

C'est ce que je fais actuellement:

  1. Je fais une requête dans ContactsContract.RawContacts.CONTENT_URI et d'obtenir leur ContactsContract.RawContacts._ID

  2. faire une autre requête après ses données dans ContactsContract.RawContacts.Entity.CONTENT_DIRECTORY en fonction de l'identifiant et

  3. Ajoutez-le à un tableau. (cela ne semble pas une bonne solution mais je ne connais pas d'autre moyen pour y parvenir)

Qu'est-ce qui me manque?

+0

Il semble qu'il n'y a aucun moyen de le faire à l'aide d'une simple requête. Depuis 4 ans, il n'y a pas eu d'évolution dans ce système archaïque. – Softlion

Répondre

0

Exécuter requête comme ceci

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, 
    ContactsContract.Contacts.HAS_PHONE_NUMBER + " = 1", 
    null, 
    "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC"); 

curseur Maintenant retrun valeur shoted

+0

Merci pour votre réponse incroyablement rapide, mais j'ai mentionné dans le titre que je cherche RawContacts (qui appartiennent à un compte spécifique) – DoruChidean

+0

élaborer plus s'il vous plaît –

+0

Table ContactsContract.RawContacts, pas ContactsContrat.Contacts table – Softlion