2017-09-18 47 views
2

我使用的是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

回答

0

我正在調試到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將檢查消息的類型是聊天還是正常。

  • 0

    我追溯了代碼,發現在這個版本中有AbstractJidTypeFilter.class的bug。

    改變從啪4.2.0您的版本嫌4.2.2應該工作。
    希望它可以解決您的問題。