当前位置: 代码迷 >> Android >> android2.0对联系人丛组的操作
  详细解决方案

android2.0对联系人丛组的操作

热度:49   发布时间:2016-05-01 14:04:32.0
android2.0对联系人群组的操作
// 查询所有的组 (Title/ID)
Cursor groupCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI,   new String[]{ContactsContract.Groups.TITLE, ContactsContract.Groups._ID},  null, null, null);
// 每个组的ID是唯一的,但是Title可能相同,你合并一下

1-2-5
// 查询每一组下面的所有成员
Cursor rawcontactOfGroup = getContentResolver().query(ContactsContract.Data.CONTENT_URI,   new String[] { ContactsContract.Data.RAW_CONTACT_ID },  ContactsContract.Data.MIMETYPE+" = '"+GroupMembership.CONTENT_ITEM_TYPE  +"' AND "+ContactsContract.Data.DATA1+"="+ <你要查找的GroupID>,   null, null);
// 得到的是每一个拆分的联系人的rawContactId

// 用rawContactId去查合并后的所有联系人
StringBuilder inSelectionBff = new StringBuilder(RawContacts._ID).append(" IN ( 0");for (long id : rawcontacts) { // rawcontacts是前面得到的rawContactd数组 inSelectionBff.append(',').append(id);}inSelectionBff.append(')');Cursor contactIdCursor = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI,  new String[] { ContactsContract.RawContacts.CONTACT_ID }, inSelectionBff.toString(), null, null);Map map=new HashMap();while (contactIdCursor.moveToNext()) { map.put(contactIdCursor.getLong(0), 1);}contactIdCursor.close();long[] contacts = new long[map.size()];Iterator it = map.entrySet().iterator();int i = 0;while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); long key = (Long) entry.getKey(); contacts[i] = key; i++;}}
// 这里得到的数组contacts[]就是所有合并后的联系人ID (contactId)

// 用contactId查询contact名字信息
Cursor contactNameCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,  new String[] { ContactsContract.Contacts.DISPLAY_NAME_PRIMARY },   ContactsContract.Contacts._ID, null, null);
// 得到Name

1-2-5
// 前面已经保存了contactId,用它查询得到每一个拆分的联系人(rawContactId)
Cursor rawContactCursor = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI,  new String[] { ContactsContract.RawContacts._ID },   ContactsContract.RawContacts.CONTACT_ID+"="+ <你要查询的contactId>, null, null);
// 用上面得到的每个rawContactId查询电话
Cursor phoneCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
  new String[] { ContactsContract.Data.DATA1 },
  ContactsContract.Data.RAW_CONTACT_ID+"=" <你要查询的rawContactId>+" AND "+
  ContactsContract.Data.MIMETYPE+" = '"+GroupMembership.CONTENT_ITEM_TYPE +"'",
  null, null);