首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android服务添加messagelistener来侦听所有MultiUserChat消息

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

Stack Overflow用户
提问于 2014-04-28 08:57:10
回答 1查看 1.1K关注 0票数 0

我正在使用Openfire和Asmack开发一个聊天应用程序。我有一个运行后台的服务,以保持连接活动,并侦听所有聊天的传入消息。到目前为止,我已经成功地实现了一对一(单)聊天。下面的代码是我的侦听器,用于所有的单一聊天。

代码语言:javascript
复制
chatmanager = connection.getChatManager();
chatmanager.addChatListener(
    new ChatManagerListener() {
        @Override
        public void chatCreated(Chat chat, boolean createdLocally)
        {
            if (!createdLocally) {
                chat.addMessageListener(new MyNewMessageListener(getApplicationContext()));
            }
        }
});

但是现在我的问题是如何对MultiUserChat消息实现相同的东西?希望你们能帮我个忙。提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-06 15:44:11

我解决了我的问题,但不确定这是最好的办法。然而,希望这将帮助你们,并始终欢迎更好的答案。

我第一次addInvitationListener并自动加入房间一旦收到任何邀请

代码语言:javascript
复制
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()));
    }
});

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

*确保将房间设置为在开火炉一侧保持不变

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23336680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档