2010-06-09 5 views
1

Je reçois une liste de contacts dans un identifiant de groupe donné par id:Android 2.0 Comment obtenir le nom d'affichage et le numéro dans un groupe de contact

Cursor cur = ctx.managedQuery(ContactsContract.Data.CONTENT_URI, 
      new String[] { GroupMembership.GROUP_ROW_ID, 
     GroupMembership.CONTACT_ID }, 
     GroupMembership.GROUP_ROW_ID + "=" + String.valueOf(id), 
     null, null); 

if (cur.moveToFirst()) { 
    int groupIdx = cur.getColumnIndex(GroupMembership.GROUP_ROW_ID); 
    int personIdx = cur.getColumnIndex(GroupMembership.CONTACT_ID); 

    do { 
     if (cur.getLong(groupIdx) == id) { 
      Cursor ccur = ctx.getContentResolver().query(Phone.CONTENT_URI, 
       new String[] {Phone.NUMBER, Phone.TYPE, 
       Phone.DISPLAY_NAME }, 
       Phone.CONTACT_ID +"="+ contactId, 
         null, null); 
      Log.e("Test: Number", ccur.getString(0)) 
      Log.e("Test: Name", ccur.getString(2)) 
     } 
    } while (cur.moveToNext()); 
} 

Mais il semble que cela ne fonctionne pas correctement.

Répondre

3

Il vous manque probablement le type MIME.

String where = ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=" 
       + groupid + " AND " 
       + ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='" 
       + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'"; 

     Cursor c = this.ctx.getContentResolver().query(
       ContactsContract.Data.CONTENT_URI, 
       new String[] { 
         ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID, 
         ContactsContract.Data.DISPLAY_NAME 
       }, where, null, ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); 
+0

Merci pour votre réponse rapide. Quelle est la différence entre ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID et ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID? –

+0

http://groups.google.com/group/android-developers/browse_thread/thread/77d579d60d803094 – Pentium10