在我的应用程序中,我想使用smack 4.1创建组并将用户添加到组中。 我能够创建组但无法在该组中添加用户。 我的创建组代码是......
创建论坛
if (connection != null) {
String groupName = XmppUtils.buildMUCName(grpName);
MultiUserChat multiUserChat = managerMuc.getMultiUserChat(groupName);
if (!multiUserChat.isJoined()) {
boolean createNow;
try {
multiUserChat.createOrJoin(grpName);
createNow = true;
if (createNow) {
Form form = multiUserChat.getConfigurationForm().createAnswerForm();
form.setAnswer("muc#roomconfig_publicroom", true);
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<String> cast_values = new ArrayList<String>();
cast_values.add("moderator");
cast_values.add("participant");
cast_values.add("visitor");
form.setAnswer("muc#roomconfig_presencebroadcast", cast_values);
multiUserChat.sendConfigurationForm(form);
multiUserChat.join(userDate.getUserId().toString() + "@" + Config.ChatValues.SERVICE_NAME); // multiUserChat.sendConfigurationForm(new Form(DataForm.Type.submit)); //this is to create the room immediately after join.
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
Log.e("createGroup", "=======multiUserChat.isJoined()=====>");
}
}
添加用户的代码 这就是我要添加的用户
// 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();
}
答案 0 :(得分:1)
我做的有点相同。如果您使用了,请发送邀请,然后在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邀请
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!");
}
}
});