// 查询所有的组 (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);
分享到:
相关推荐
Android系统提供了一些基本应用程序,如拨打电话、收发短信、联系人、桌面等。 ArcGIS Runtime for Android是ArcGIS Runtime SDKs的一个成员,它为Android平台提供GIS功能,允许开发者在Android应用程序中集成强大...
如果需要,处理iOS的隐私权限提示,如访问联系人、麦克风和摄像头等。 3. **功能实现**: - **基本聊天**:创建聊天会话,发送文本、图片、语音、文件等多种类型的消息。 - **音视频通话**:集成融云的RTC服务,...
6. **UI设计**:遵循Android Material Design指南,提供良好的用户体验,包括聊天界面、联系人列表和消息通知。 7. **数据存储**:本地存储聊天记录,可以利用SQLite数据库或者Android的SharedPreferences来保存用户...
3. **布局设计**: 使用XML进行界面布局,包括聊天窗口、联系人列表、消息气泡等元素的设计。可以运用RecyclerView来展示消息列表,提高性能。 4. **数据持久化**: SQLite数据库存储用户信息、好友列表和本地聊天...
1. **用户界面(UI)**:这部分包含了各种Activity和Fragment,它们负责展示聊天界面、联系人列表、设置等视图。使用Android的布局语言XML定义界面元素,并通过Java或Kotlin代码进行逻辑控制。UI组件如EditText、...
- **语音和视频通话**:实现一对一和群组的语音、视频通话功能,提供高质量的音视频交流体验。 - **群聊管理**:创建、解散、邀请成员、踢出成员等群聊操作。 - **消息存储与同步**:确保离线消息的存储和在线时...
QQ作为中国最流行的即时通信工具,它的API和SDK为开发者提供了丰富的功能,包括但不限于发送和接收消息、管理联系人、处理群组信息、实现自定义机器人等。以下是关于QQ编程代码的一些关键知识点: 1. **QQ API与SDK...
联系人列表展示可交谈的用户或群组,而聊天室列表则显示已建立的对话。聊天窗口是用户输入和查看消息的地方,包括发送按钮、输入框以及接收的消息列表。 2. **实时通信技术** 实现ChatDemo的实时通信功能,开发者...
1. **用户界面设计**:克隆应用需要具备与KakaoTalk相似的用户界面,包括登录/注册页面、联系人列表、聊天窗口、群组管理等功能。 2. **网络通信**:使用Java的网络编程API(如Socket或HTTP/HTTPS)来处理客户端与...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...
jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...