如何在android中使用smack 4.1创建xmpp群组聊天和添加成员

如何在android中使用smack 4.1创建xmpp群组聊天和添加成员,android,xmpp,chat,smack,groupchat,Android,Xmpp,Chat,Smack,Groupchat,在我的应用程序中,我想使用smack 4.1创建组并将用户添加到组中。 我可以创建组,但无法在该组中添加用户。 我创建组的代码是 创建组 if(连接!=null){ 字符串groupName=XmppUtils.buildMUCName(grpName); MultiUserChat MultiUserChat=managerMuc.getMultiUserChat(groupName); 如果(!multiUserChat.isjoin()){ 现在就开始; 试一试{ multiUserCha

在我的应用程序中,我想使用smack 4.1创建组并将用户添加到组中。 我可以创建组,但无法在该组中添加用户。 我创建组的代码是

创建组

if(连接!=null){
字符串groupName=XmppUtils.buildMUCName(grpName);
MultiUserChat MultiUserChat=managerMuc.getMultiUserChat(groupName);
如果(!multiUserChat.isjoin()){
现在就开始;
试一试{
multiUserChat.createOrJoin(grpName);
createNow=true;
如果(现在创建){
Form Form=multiUserChat.getConfigurationForm().createAnswerForm();
form.setAnswer(“muc#roomconfig_publicroom”,真);
form.setAnswer(“muc#roomconfig_roomname”,grpName);//form.setAnswer(“muc#roomconfig_roomowners”,userDate.getUserId().toString()+”@“+Config.ChatValues.SERVICE_NAME);
form.setAnswer(“muc#roomconfig_persistentroom”,true);
List cast_values=new ArrayList();
添加(“主持人”);
铸造价值。添加(“参与者”);
铸造价值。添加(“访客”);
form.setAnswer(“muc#roomconfig)presencebroadcast”,cast#U values);
multiUserChat.sendConfigurationForm(表单);
multiUserChat.join(userDate.getUserId().toString()+“@”+Config.ChatValues.SERVICE_NAME);//multiUserChat.sendConfigurationForm(新表单(DataForm.Type.submit));//这是在加入后立即创建文件室。
}
}捕获(例外e){
e、 printStackTrace();
}
}否则{
Log.e(“createGroup”,“multiUserChat.isjoin()=====”);
}
}
添加用户的代码 这就是我为添加用户所做的

//使用XMPPConnection为聊天室创建多用户聊天室
字符串roomName=groupName+“@”+Config.ChatValues.GROUP\u SERVICE\u NAME;
MultiUserChat muc2=managerMuc.getMultiUserChat(roomName);
//User2加入新房间
//客房服务将决定发送的历史记录数量
//聊天室服务的数量将决定接受历史记录
/*DiscussionHistory=新DiscussionHistory();
历史。setMaxStanzas(0)*/
//history.setSince(新日期());
试一试{
对于(int i=0;i”+roomName+“要加入的用户”+用户ID);
muc2.invite(msg,userId,“让我们加入这个房间”);
muc2.sendMessage(userId+):您已加入组:“+roomName”;
}
}捕捉(SmackException.NotConnectedException e){
e、 printStackTrace();
}

我也做了一些类似的事情。只要你发送邀请,然后在openfire上安装插件订阅(如果你使用)。更改设置以接受任何请求

若你们不使用openfire,那个么你们只需要接受对方的邀请。 希望这对你有帮助

MultiUserChat muc = new MultiUserChat(XMPP.getInstance().getConnection(getActivity()), groupname);
                try {
                    muc.create(StringUtils.parseName(XMPP.getInstance().getConnection(getActivity()).getUser()));
                    muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
                } catch (XMPPException e) {
                } catch (NoResponseException e) {
                    e.printStackTrace();
                } catch (SmackException e) {
                    e.printStackTrace();
                }

                for (int i = 0; i < alSelectedContacts.size(); i++) {

                    Log.e("tag", "group chating purpose1 ::" + alSelectedContacts.get(i).get("id"));
                    try {
                        muc.invite((alSelectedContacts.get(i).get("id") + "_user") + "@" + XMPP.HOST,
                                alSelectedContacts.get(i).get("id") + "_user");
                    } catch (NotConnectedException e) {
                        e.printStackTrace();
                    }

                }

                try {
                    muc.sendMessage("New group created");
                } catch (NotConnectedException e1) {
                    e1.printStackTrace();
                } catch (XMPPException e1) {
                    e1.printStackTrace();
                }

您好,您学习了什么并尝试了什么来进行群聊?我可以创建群,但无法在该群中添加用户,然后发布您尝试过的代码,其他人如何理解您的问题所在以及您无法在聊天室中添加用户的原因?您应该在会议室中添加用户。其他用户如何获得此邀请,以及他如何接受此邀请,并将其作为消息发送,然后只需呼叫此,muc.join(“测试昵称”);我已经编辑了我的答案,请检查。我必须在用户登录后添加此addInvitationListener?是的,请确保您已连接到服务器
  // Create a MultiUserChat using an XMPPConnection for a room

   String roomName = groupName + "@" + Config.ChatValues.GROUP_SERVICE_NAME;
    MultiUserChat muc2 = managerMuc.getMultiUserChat(roomName);
    // User2 joins the new room
    // The room service will decide the amount of history to send
    // The number of chat room services will decide to accept the historical record
   /* DiscussionHistory history = new DiscussionHistory();
    history.setMaxStanzas(0);*/

    //history.setSince(new Date());
    try {

        for (int i = 0; i < selectedLisrArray.size(); i++) {
            String userId = selectedLisrArray.get(i).userId.toString() + "@" + Config.ChatValues.SERVICE_NAME;
            Log.e("joinGroups", "=========>" + roomName + " users to join  " + userId);

            muc2.invite(msg, userId, "let's  join this room ");
            muc2.sendMessage(userId + " : You have joined the group : " + roomName);
        }

    } catch (SmackException.NotConnectedException e) {
        e.printStackTrace();
    }
MultiUserChat muc = new MultiUserChat(XMPP.getInstance().getConnection(getActivity()), groupname);
                try {
                    muc.create(StringUtils.parseName(XMPP.getInstance().getConnection(getActivity()).getUser()));
                    muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
                } catch (XMPPException e) {
                } catch (NoResponseException e) {
                    e.printStackTrace();
                } catch (SmackException e) {
                    e.printStackTrace();
                }

                for (int i = 0; i < alSelectedContacts.size(); i++) {

                    Log.e("tag", "group chating purpose1 ::" + alSelectedContacts.get(i).get("id"));
                    try {
                        muc.invite((alSelectedContacts.get(i).get("id") + "_user") + "@" + XMPP.HOST,
                                alSelectedContacts.get(i).get("id") + "_user");
                    } catch (NotConnectedException e) {
                        e.printStackTrace();
                    }

                }

                try {
                    muc.sendMessage("New group created");
                } catch (NotConnectedException e1) {
                    e1.printStackTrace();
                } catch (XMPPException e1) {
                    e1.printStackTrace();
                }
MultiUserChat.addInvitationListener(mXmppConnection,
        new InvitationListener() {

            @Override
            public void invitationReceived(Connection connection,
                    String room, String inviter, String reason,
                    String unKnown, Message message) {

                //MultiUserChat.decline(mXmppConnection, room, inviter,
                    //  "Don't bother me right now");
                // MultiUserChat.decline(mXmppConnection, room, inviter,
                // "Don't bother me right now");
                try {
                   muc.join("test-nick-name");
                   Log.e("abc","join room successfully");
                   muc.sendMessage("I joined this room!! Bravo!!");
                } catch (XMPPException e) {
                   e.printStackTrace();
                   Log.e("abc","join room failed!");
                }
            }
        });