2011-05-19 4 views
3

Je ne peux pas obtenir le nom du groupe sous lequel le contact est stocké. Je peux savoir si elle est ajoutée dans un groupe en tant que valeur booléenne (IN_VISIBLE_GROUP). Je n'ai aucune idée de comment obtenir le nom ou l'identifiant du groupe.Comment obtenir l'identifiant ou le nom du groupe de contacts?

 ContentResolver cr = this.getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 
    if (cur.getCount() > 0) { 
    while (cur.moveToNext()) 
      { 

       id = cur.getString(cur 
         .getColumnIndex(BaseColumns._ID)); 

       String name = cur 
         .getString(cur 
           .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       String group = cur 
       .getString(cur 
         .getColumnIndex(ContactsContract.Contacts.IN_VISIBLE_GROUP)); 

j'ai essayé d'utiliser ContactsContract.Groups et ContactsContract.Groups et ContactsContract.CommonDataKinds.GroupMembership mais ce n'est pas la solution.

+0

Normaly, vous utilisez les touches [ContactsContract.Groups] (http://developer.android.com/reference/android/provider/ContactsContract.Groups.html) -class. Pourquoi ça ne marche pas pour toi? –

+0

@Lukas i utilisé Chaîne g = cur \t \t \t \t \t .getString (cur1 \t \t \t \t \t \t \t .getColumnIndex (ContactsContract.Groups.TITLE)); mais renvoie le même code de base BaseColumns._ID.Any pour obtenir l'utilisation de ContactsContract.Groups s'il vous plaît .. – adithi

+0

Vous pouvez vérifier l'application Android-Contact de base, dont le code source peut être trouvé [ici] (https://github.com/android/platform_packages_apps_contacts/tree/master/src/com/android/contacts) –

Répondre

0

S'il vous plaît changer

ContentResolver cr = this.getContentResolver(); 

à

Uri groupURI = ContactsContract.Data.CONTENT_URI; 


Cursor cur = cr.query(groupURI , null, null, null, null); 


// Now you can get group ID from cursor 

String groupRowId = cur.getString (cur.getColumnIndex(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID)); 
1

Ceci est une version complète de la façon d'obtenir l'identifiant du groupe par son title. Fondamentalement it itère all groups et compare les titres pour trouver son id.

private String getGroupId(String groupTitle) { 
    Cursor cursor =getContentResolver().query(ContactsContract.Groups.CONTENT_URI,new String[]{ContactsContract.Groups._ID,ContactsContract.Groups.TITLE}, null, null, null);  
    cursor.moveToFirst(); 
    int len = cursor.getCount(); 

    String groupId = null; 
    for (int i = 0; i < len; i++) { 
     String id = cursor.getString(cursor.getColumnIndex(Groups._ID)); 
     String title = cursor.getString(cursor.getColumnIndex(Groups.TITLE)); 

     if (title.equals(groupTitle)) { 
      groupId = id; 
      break; 
     } 
     cursor.moveToNext(); 
    } 
    cursor.close(); 

    return groupId; 
} 
Questions connexes