2010-12-07 28 views
0

Eh bien, j'ai regardé autour de moi et je ne trouve pas de façon spécifique d'afficher réellement la liste de contacts. J'ai trouvé des tutoriels tels que higher pass's, mais il ne discute jamais vraiment comment les afficher, juste comment les obtenir. Je veux simplement afficher la liste de contacts dans un listView ou quelque chose de similaire. Je sais que cela doit être beaucoup plus simple que je ne le pense, parce que cela semble être chose courante. Plus précisément, tout ce que je veux, c'est le nom et les numéros de téléphone du contact. Je me demande mis en place, que je suis le tutoriel mentionné ci-dessus, et je pense il a raison:Obtenir et afficher les contacts

 ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 
    if (cur.getCount() > 0) { 
    while (cur.moveToNext()) { 
     String id = cur.getString(
        cur.getColumnIndex(ContactsContract.Contacts._ID)); 
    String name = cur.getString(
        cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

    if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
     Cursor pCur = cr.query(
       ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
       null, 
       ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
       new String[]{id}, null); 
       while (pCur.moveToNext()) { 
       } 
       pCur.close(); 
     } 
     } 
} 

Répondre

0

Il est une activité intégrée pour cela:

startActivity(new Intent(Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_URI)); 

Si vous utilisez startActivityForResult(), vous pouvez même récupérer le contact choisi par l'utilisateur.

Si ce n'est pas ce que vous cherchez, vous voulez réduire à une seule requête si possible, puis créer un Adapter pour votre ListView. Here is a sample project qui affiche les contacts pour renseigner un ListView, indiquant le nom du contact, son nom et son numéro de téléphone, ou son nom et son adresse e-mail. Cela devient un peu plus compliqué car l'exemple montre à la fois les API Android 1.6 et inférieures et Android 2.0 et supérieures.

+0

Merci beaucoup! le startActivityForResult() est exactement ce dont j'avais besoin. Cependant, j'ai un peu de mal à récupérer l'information. Il me permet de sélectionner très bien, et il retourne à mon application, mais maintenant je dois remplir un editText avec le numéro de téléphone. J'espère que je vais comprendre cela. Merci encore! – Brandon

+1

ACTION_PICK doit être utilisé pour obtenir les données de contact. http://stackoverflow.com/a/11088915/525319 – Yar