2011-05-24 26 views
5

İletişim bilgilerini, ait olduğu grupla birlikte almak istiyorum. Telefondaki tüm iletişim gruplarını listelemek için kodum var. Belirli bir kişinin grubunun alınması

Cursor groupC = getContentResolver().query(
    ContactsContract.Groups.CONTENT_URI, null, null, null, null); 

while (groupC.moveToNext()) { 
    String groupid = 
     groupC.getString(groupC.getColumnIndex(ContactsContract.Groups._ID)); 
    Log.e("myTag", groupid); 
    String grouptitle = 
     groupC .getString(groupC.getColumnIndex(ContactsContract.Groups.TITLE)); 
    Log.e("myTag", grouptitle); 
} 
groupC.close(); 

Sonra onun kimliği kullanarak belirli bir kişi için sorgulamak için çalıştı ama her zaman There is no such column... göstermektedir.

Cursor groupC = getContentResolver().query(
    ContactsContract.Groups.CONTENT_URI, 
    null, 
    ContactsContract.Contacts._ID+"= ?", 
    new String[]{id}, 
    null); 

id

Cursor cur = cr.query(
    ContactsContract.Contacts.CONTENT_URI, 
    null, 
    null, 
    null, 
    null); 
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

Nasıl belirli bir iletişim kimliği kullanarak grubu sorgulamak için nerede?

cevap

2

Yanıtı buldum.İş iletişim kimliğini ve doğru mim tipini iletmeliyiz.

String where = ContactsContract.Data.RAW_CONTACT_ID 
      + "=" 
      + Integer.parseInt(id) 
      + " AND " 
      + ContactsContract.Data.MIMETYPE 
      + "='" 
      + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE 
      + "'"; 

    Cursor cursor = ctx 
      .getContentResolver() 
      .query(ContactsContract.Data.CONTENT_URI, null, where, null, 
        null); 
    startManagingCursor(cursor); 
    Log.e("Count is:", ""+ cursor.getCount()); 
    while (cursor.moveToNext()) { 
     groupid = cursor 
       .getString(cursor.getColumnIndex(ContactsContract.Data.DATA1)); 
     Log.e("groupid", groupid); 
     builder.append(groupid); 

    }String where = ContactsContract.Data.RAW_CONTACT_ID 
      + "=" 
      + Integer.parseInt(id) 
      + " AND " 
      + ContactsContract.Data.MIMETYPE 
      + "='" 
      + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE 
      + "'"; 

    Cursor cursor = ctx 
      .getContentResolver() 
      .query(ContactsContract.Data.CONTENT_URI, null, where, null, 
        null); 
    startManagingCursor(cursor); 
    Log.e("Count is:", ""+ cursor.getCount()); 
    while (cursor.moveToNext()) { 
     groupid = cursor 
       .getString(cursor.getColumnIndex(ContactsContract.Data.DATA1)); 
     Log.e("groupid", groupid); 
     break; 
    } 

Bir kişi birden fazla grupta olabilir, burada ilk grubunu yeniden gruplandırır. Bu Birine faydalı olabilir düşünüyorum

...

+0

o GroupMembership bir URI, sadece bir MIME türü olmadığından bu şekilde yapılması gerekmektedir. Google bunun neden iyi olduğuna karar verdi? –

İlgili konular