无法使用 smackx MultiUserChat API 接收聊天消息

Posted

技术标签:

【中文标题】无法使用 smackx MultiUserChat API 接收聊天消息【英文标题】:Not able to receive chat messages using smackx MultiUserChat API 【发布时间】:2012-03-26 19:09:36 【问题描述】:

我正在尝试使用 smack API for android 来开发使用 gmail 帐户的聊天室。我设法创建了一个房间并向群组发送消息。但是当有人回复时,我无法直接在聊天窗口或通过程序(muc.addMessageListener(myMessageListener)和PacketListener)接收传入消息。

ConnectionConfiguration config = new ConnectionConfiguration("talk.google.com", 5222, "gmail.com"); config.setSASLAuthenticationEnabled(true); connection = new XMPPConnection(config); connection.connect(); connection.login("kandroid6990@gmail.com", "password"); muc = new MultiUserChat(connection, "private-chat-12325669-dead-beff-feed-fedcba987454@groupchat.google.com"); muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); muc.join("kandroid6990"); muc.invite("karthikbaskar3@gmail.com/User1", "Welcome!"); muc.invite("kamaraj6990@gmail.com/User2", "Welcome!"); Message msg = new Message("private-chat-12325669-dead-beff-feed-fedcba987454@groupchat.google.com", Message.Type.groupchat); msg.addBody(Message.getDefaultLanguage(), messageText); muc.sendMessage(msg);

【问题讨论】:

你得到答案了吗 【参考方案1】:

试试

muc.addMessageListener(myMessageListener);

【讨论】:

在我的问题中通过程序指的是 muc.addMessageListener(myMessageListener);和 PacketListeners【参考方案2】:
private MultiUserChat   muc; /* Initialize muc */
private void listeningForMessages() 
 
    muc.addMessageListener(new PacketListener() 
    public void processPacket(Packet packet) 
    
        final Message message = (Message) packet;
        // Do your action with the message              
    
    );
  

【讨论】:

【参考方案3】:

试试这个可能有助于接收群聊消息 只需实现群聊监听器

PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);
XmppTool.con.addPacketListener(new PacketListener() 
    @Override
    public void processPacket(Packet packet) 
        Message message = (Message) packet;


            
        
    
, filter);

【讨论】:

在 smack 4.1.5 中 MessageTypeFilter 是私有访问,所以我们无法实现这个

以上是关于无法使用 smackx MultiUserChat API 接收聊天消息的主要内容,如果未能解决你的问题,请参考以下文章

XMPP Android - 无法创建 MultiUserChat

ClassCastException: org.jivesoftware.smack.PacketReader$4 在传输文件时无法转换为 org.jivesoftware.smackx.packet

无法使用 Smack 创建 MultiUserChat:接收 SmackException$NoResponseException:在回复中未收到响应

asmack 是不是有类似于 smackx 的扩展 jar?

如何使用 aSmack 获取 MultiUserChat 房间的 DiscussionHistory?

创建 MultiUserChat 时出现 NoResponseException