我正在使用Openfire和Asmack开发一个聊天应用程序。我有一个运行后台的服务,以保持连接活动,并侦听所有聊天的传入消息。到目前为止,我已经成功地实现了一对一(单)聊天。下面的代码是我的侦听器,用于所有的单一聊天。
chatmanager = connection.getChatManager();
chatmanager.addChatListener(
new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally)
{
if (!createdLocally) {
chat.addMessageListener(new MyNewMessageListener(getApplicationContext()));
}
}
});但是现在我的问题是如何对MultiUserChat消息实现相同的东西?希望你们能帮我个忙。提前谢谢!
发布于 2014-05-06 15:44:11
我解决了我的问题,但不确定这是最好的办法。然而,希望这将帮助你们,并始终欢迎更好的答案。
我第一次addInvitationListener并自动加入房间一旦收到任何邀请
MultiUserChat.addInvitationListener(connection, new InvitationListener() {
@Override
public void invitationReceived(Connection conn, String room, String inviter, String reason, String password, Message arg5) {
MultiUserChat muc = new MultiUserChat(connection, room);
try {
muc.join(connection.getUser().substring(0, connection.getUser().indexOf("@")));
} catch (XMPPException e) {
Log.d("Error","line 123 : "+e.toString());
}
muc.addMessageListener(new ServiceGroupMessageListener(getApplicationContext()));
}
});接下来,我将所有输入的房间名称存储到数据库中。然后创建一个函数,从数据库中获取房间名称,最后向每个房间添加消息侦听器。所以当我下次再次打开这个应用程序时,它会将消息侦听器绑定到每个聊天室。
*确保将房间设置为在开火炉一侧保持不变
https://stackoverflow.com/questions/23336680
复制相似问题