2014-04-21 99 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