====== 群组管理 ====== ---- ===== 发送消息 ===== 发送文字、语音、图片、位置消息。收发消息及聊天记录相关等。 这部分与单聊是一样的,详情见[[start:200androidcleintintegration:50singlechat|单聊]]。 ===== 新建群组 ===== ==== 创建私有群 ==== 私有群,不能被搜索到,只能通过群主加人进群,或者设置了 allowInvite 为 true,即允许群成员邀请,那么群成员也可以邀请群外面的人进入群聊,此种群群成员可以邀请,不能踢人,类似微信群。 //groupName:要创建的群聊的名称 //desc:群聊简介 //members:群聊成员,为空时这个创建的群组只包含自己 //allowInvite:是否允许群成员邀请人进群 EMGroupManager.getInstance().createPrivateGroup(groupName, desc, members,allowInvite);//需异步处理 //前一种方法创建的群聊默认最大群聊用户数为200,传入maxUsers后设置自定义的最大用户数,最大为2000 EMGroupManager.getInstance().createPrivateGroup(groupName, desc, members,allowInvite,maxUsers);//需异步处理 ==== 创建公开群 ==== 公开群可以被用户搜索到,并且可以直接加入或者申请加入。 //前面三个参数和创建私有群一致 //needApprovalRequired: 如果创建的公开群用需要户自由加入,就传false。否则需要申请,等群主批准后才能加入,传true EMGroupManager.getInstance().createPublicGroup(groupName, desc, members, needApprovalRequired);//需异步处理 //前一种方法创建的群聊默认最大群聊用户数为200,传入maxUsers后设置自定义的最大用户数,最大可以设为2000 EMGroupManager.getInstance().createPublicGroup(groupName, desc, members, needApprovalRequired,maxUsers);//需异步处理 ===== 群聊加人 ===== //群主加人调用此方法 EMGroupManager.getInstance().addUsersToGroup(groupId, newmembers);//需异步处理 //私有群里,如果开放了群成员邀请,群成员邀请调用下面方法 EMGroupManager.getInstance().inviteUser(groupId, newmembers, null);//需异步处理 ===== 群聊减人 ===== //把username从群聊里删除 EMGroupManager.getInstance().removeUserFromGroup(groupId, username);//需异步处理 ===== 加入某个群聊 ===== 只能用于加入公开群。 //如果群开群是自由加入的,即group.isMembersOnly()为false,直接join EMGroupManager.getInstance().joinGroup(groupid);//需异步处理 //需要申请和验证才能加入的,即group.isMembersOnly()为true,调用下面方法 EMGroupManager.getInstance().applyJoinToGroup(groupid, "求加入");//需异步处理 ===== 退出群聊 ===== EMGroupManager.getInstance().exitFromGroup(groupId);//需异步处理 ===== 解散群聊 ===== EMGroupManager.getInstance().exitAndDeleteGroup(groupId);//需异步处理 ===== 获取群聊列表 ===== //从服务器获取自己加入的和创建的群聊列表(两种方式),此API获取的群组SDK会自动保存到内存和db。 //注意,获取到的列表里的群聊只有groupname和groupid等简单配置信息 1.List grouplist = EMGroupManager.getInstance().getGroupsFromServer();//需异步处理 2.EMGroupManager.getInstance().asyncGetGroupsFromServer(newEMValueCallBack>() { @Override public void onSuccess(List value) { // TODO Auto-generated method stub } @Override public void onError(int error, String errorMsg) { // TODO Auto-generated method stub } }); //从本地加载群聊列表 List grouplist = EMGroupManager.getInstance().getAllGroups(); //获取所有公开群列表(两种方式) 1.List groupsList = EMGroupManager.getInstance().getAllPublicGroupsFromServer();//需异步处理 2.EMGroupManager.getInstance().asyncGetAllPublicGroupsFromServer(new EMValueCallBack>() { @Override public void onSuccess(List value) { // TODO Auto-generated method stub } @Override public void onError(int error, String errorMsg) { // TODO Auto-generated method stub } }); ===== 修改群组名称 ===== //groupId 需要改变名称的群组的id //changedGroupName 改变后的群组名称 EMGroupManager.getInstance().changeGroupName(groupId,changedGroupName);//需异步处理 ===== 群聊信息 ===== ==== 获取单个群聊信息 ==== //根据群聊ID从本地获取群聊基本信息 EMGroup group = EMGroupManager.getInstance().getGroup(groupId); //根据群聊ID从服务器获取群聊基本信息 EMGroup group =EMGroupManager.getInstance().getGroupFromServer(groupId); //保存获取下来的群聊基本信息 EMGroupManager.getInstance().createOrUpdateLocalGroup(returnGroup); group.getMembers();//获取群成员 group.getOwner();//获取群主 ... 其它方法详见[[http://www.easemob.com/apidoc/android/chat/|环信接口文档]]。 ==== 屏蔽群消息 ==== /** * 屏蔽群消息后,就不能接收到此群的消息 (群创建者不能屏蔽群消息)(还是群里面的成员,但不再接收消息) * @param groupId, 群id * @throws EasemobException */ EMGroupManager.getInstance().blockGroupMessage(groupId);//需异步处理 ==== 解除屏蔽群 ==== /** * 取消屏蔽群消息,就可以正常收到群的所有消息 * @param groupId * @throws EaseMobException */ EMGroupManager.getInstance().unblockGroupMessage(groupId);//需异步处理 ==== 群聊不提醒只显示数目 ==== //如果群聊只是想提示数目,不响铃。可以通过此属性设置,此属性是本地属性 EMChatManager.getInstance().getChatOptions().setReceiveNotNoifyGroup(List) ===== 群组的黑名单 ===== ==== 将群成员拉入群组的黑名单 ==== /** * 将用户加到群组的黑名单,被加入黑名单的用户无法加入群,无法收发此群的消息 * (只有群主才能设置群的黑名单) * @param groupId, 群组的id * @param username, 待屏蔽的用户名 * @exception EaseMobException 出错会抛出 */ EMGroupManager.getInstance().blockUser(groupId, username);//需异步处理 ==== 将拉入黑名单的群成员移除 ==== /** * 将用户从群组的黑名单移除(只有群主才能调用此函数) * @param groupId, 群组的id * @param username, 待解除屏蔽的用户名 */ EMGroupManager.getInstance().unblockUser(groupId, username);//需异步处理 ==== 获取群组的黑名单用户列表 ==== /** * 获取群组的黑名单用户列表 * (只有群主才能调用此函数) * @return List * @throws EaseMobException 获取失败 */ EMGroupManager.getInstance().getBlockedUsers(groupId);//需异步处理 ===== 群聊事件监听 ===== EMGroupManager.getInstance().addGroupChangeListener(new GroupChangeListener() { @Override public void onUserRemoved(String groupId, String groupName) { //当前用户被管理员移除出群聊 } @Override public void onInvitationReceived(String groupId, String groupName, String inviter, String reason) { //收到加入群聊的邀请 } @Override public void onInvitationDeclined(String groupId, String invitee, String reason) { //群聊邀请被拒绝 } @Override public void onInvitationAccpted(String groupId, String inviter, String reason) { //群聊邀请被接受 } @Override public void onGroupDestroy(String groupId, String groupName) { //群聊被创建者解散 } @Override public void onApplicationReceived(String groupId, String groupName, String applyer, String reason) { //收到加群申请 } @Override public void onApplicationAccept(String groupId, String groupName, String accepter) { //加群申请被同意 } @Override public void onApplicationDeclined(String groupId, String groupName, String decliner, String reason) { // 加群申请被拒绝 } }); ===== Demo 及 SDK 下载 ===== [[http://www.easemob.com/download/im|下载 Demo 及 SDK]] 详细文档请参考 [[http://www.easemob.com/apidoc/android/chat/|Java doc]] ---- 上一页:[[start:200androidcleintintegration:60buddymgmt|好友管理]] 下一页:[[start:200androidcleintintegration:75chatroom|聊天室管理]]