Smack 4.2.0 OutgoingChatMessageListener没有得到任何呼叫

问题描述:

我使用的是smack 4.2.0最新版本,这里的IncomingChatMessageListener工作正常,但是当我发送消息时OutgoingChatMessageListener没有被调用。任何人都可以告诉我这是什么问题? 我的代码是低于Smack 4.2.0 OutgoingChatMessageListener没有得到任何呼叫

ChatManager chatManager = ChatManager.getInstanceFor(mXMPPConn); 
EntityBareJid jid = JidCreate.entityBareFrom(mStrJabberID); 
Chat chat = chatManager.chatWith(jid); 
chatManager.addOutgoingListener(new OutgoingChatMessageListener() { 
    @Override 
    public void newOutgoingMessage(EntityBareJid to, Message message, Chat chat) 
    { 
     System.out.format("OUTGOING: %s.\n", message); 
    } 
}); 

chat.send(strMsg); 
+0

奇怪的是,尝试启用日志 –

+0

我也有同样的问题,让我知道如果你找出问题。 – rigal

+0

相同的问题..请帮助,如果你找到解决方案...... :( – iMDroid

我正在调试到smack的源代码。你可以尝试以下方法:

  1. 集FromMode.USER的连接发送消息

    message.setType(org.jivesoftware.smack.packet.Message.Type.chat); 
    

connection.setFromMode(XMPPConnection.FromMode.USER); 
  • 一套消息类型说明:

    1. AbstractJidTypeFilter检查从消息的jid已满或裸露。连接将设置从节的jid,默认是null。 (AbstractXMPPConnection.java#sendStanza,行666)

    2. MessageTypeFilter将检查消息的类型是聊天还是正常。

  • 我追溯了代码,发现在这个版本中有AbstractJidTypeFilter.class的bug。

    改变从啪4.2.0您的版本嫌4.2.2应该工作。
    希望它可以解决您的问题。