Android服务添加messagelistener以侦听所有MultiUserChat消息

时间:2014-04-28 08:57:10

标签: android openfire asmack

我正在使用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消息实现相同的功能?希望你们能给我一个帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我解决了我的问题,但不确定这是最好的方法。但是,希望这会帮助你们,并且总是欢迎更好的回答。

我首先添加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()));
    }
});

接下来,我将所有输入的房间名称存储到数据库中。然后创建一个从数据库中获取房间名称的函数,最后将消息监听器添加到每个房间。因此,当我下次再次打开应用程序时,它会将消息侦听器绑定到每个聊天室。

***确保将房间设置更改为在openfire方面保持不变