注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

分享,态度 ·~~

—— 十年太长,五年;如果可以回到五年前,你最想对那时候的自己说什么?

 
 
 

日志

 
 

Android查询联系人群组成员及号码  

2011-04-22 12:52:14|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

需求及各个页面大致查询代码如下:

Android查询联系人群组成员及号码 - 乂乂 - 一个人,一支烟  ·~~

1-2-4
// 查询所有的组 (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);
// over

 


 

  评论这张
 
阅读(6833)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017