2015-10-18 59 views
2

我想在我使用smack 4.1.4庫開發的android安卓聊天應用程序中接收聊天消息,我可以發送消息但我不能能夠收到任何消息。下面的方法不會被調用。這裏是我的代碼:什麼時候ProcessPacket在addSyncStanzaListener(smack 4.1.4)中被調用

protected Void doInBackground(String... urls) { 
     StanzaFilter filter = new StanzaTypeFilter(org.jivesoftware.smack.packet.Message.class); 
     connection.addSyncStanzaListener(new StanzaListener() { 
      public void processPacket(Stanza stanza) { 
       Message message = (Message) stanza; 
       if (message.getBody() != null) { 
        String fromName = message.getFrom(); 
        chatMessage newMsg = new chatMessage(message.getBody(), "in"); 
        chatList.add(newMsg); 
        Log.i("XMPPClient", "Got text [" + message.getBody() + "] from [" + fromName + "]"); 
        myadapter = new chatAdapter(actualChatActivity.this, R.layout.single_message, chatList); 
        chatListView.setAdapter(myadapter); 
       } 
      } 
     }, filter); 
     return null; 
    } 
public Void setConnection(XMPPConnection connection) 
{ 
    this.connection=connection; 
    if (connection != null) { 
     // Add a packet listener to get messages sent to us 

     new ReceiveMessageTask().execute(); 
    } 
    return null; 
} 

我怎麼能解決我的問題?

回答

0

addPacketListener嘗試,而不是addSyncStanzaListener

PacketFilter filter = new MessageTypeFilter(Message.Type.chat); 
        connection.addPacketListener(new PacketListener() { 
      public void processPacket(Packet packet) { 
       Message message = (Message) packet; 
       if (message.getBody() != null) { 
        messageReceived(
          StringUtils.parseBareAddress(message.getFrom()), 
          message.getBody() 
          ); 
       } 
      } 
     }, filter); 
+0

爲什麼要投票。 –

+0

你能告訴我如何使用這個庫發送&接收味精4.1.4。 –

0

使用以下過濾器:

FromMatchesFilter filter = FromMatchesFilter.createBare("[email protected]"); 
m_packet_collector = m_connection.createPacketCollector(filter); 

裸VS全濾波器:裸格式,只匹配了 「[email protected]」,而全濾波器匹配「[email protected]/resoure」。

相關問題