2014-04-21 151 views
0

我創建了3個活動。首先是loginactivity檢查登錄details.After登錄是全成它跳到displayactivity我用它來顯示一個listview.After一個人的聯繫人選擇列表視圖,從它跳到3活動是messageactivity任何接觸顯示2個用戶之間的聊天。現在我的問題是我在哪裏以及如何實現messageListener所以我可以顯示從另一個用戶接收到的消息messageactivity特定用戶?如何在xmpp asmack中實現消息監聽器?

+0

當你點擊特定的列表視圖項目,轉到消息活動 – Amardeepvijay

+0

是的,這就是我在做什麼,但我應該在messageactivity或displayactivity實現監聽器。我應該使用服務還是處理程序來實現它。 – Rider

回答

4

我會建議您在您的XMPPConnection中使用PacketListener,而不是MessageListeners用於您的單個聊天。您將通過此監聽器收到發送給您的所有消息(過濾器指定的類型,很可能是聊天記錄),然後您可以執行任何您想要的操作,無論是您正在與之聊天的人還是其他人。

事情是這樣的:

PacketFilter filter = new MessageTypeFilter(Message.Type.chat); 
connection.addPacketListener(new PacketListener() 
{ 
    public void processPacket(Packet packet) 
    { 
     Message message = (Message) packet; 
     String body = message.getBody(); 
     String from = message.getFrom(); 
    } 
}, filter); 

與此一起,你可能不得不使用了sendpacket代替的sendMessage但它幾乎是一樣的,你會不會擔心個人聊天實例。我希望它能達到目的。

+0

我應該如何使用服務或線程或使用任何其他方法來實現此偵聽器? – Rider

+1

聽衆已經擁有自己的話題。你應該做的是將XMPPConnection全局化爲你的應用程序,這樣它就不會影響你的活動,它會一直保持活動狀態,直到你斷開連接。創建一個具有靜態XMPPConnection對象的類,並且每個活動都可以通過該類使用該XMPPConnection。希望有所幫助! – dbar

+0

告訴我最後一件事情,即當使用偵聽器接收到消息時,我如何在UI上顯示它。我可以在這裏使用廣播。提前致謝。 – Rider