如何发送消息? android,asmack,openfire

时间:2013-08-19 01:55:43

标签: android message openfire asmack

asmack + openfire开发了一个Android IM应用程序。但我不知道如何从朋友那里收到消息然后发送到相应的聊天。

我有以下功能: 连接openfire服务器并登录成功(帐号A)。然后我有一个'FriendsActivity'显示ListView中的所有朋友,点击该项目然后意图'ChatActivity'。在'ChatActivity'中,我创建了一个聊天来计算B(或其他帐户)。

 chatManager.createChat(B, new MessageListener() {
    @Override
    public void processMessage(Chat chat2, 
               org.jivesoftware.smack.packet.Message msg) {
                       handler.obj = msg; //handler to updata the listview to show message history
            }
  }

代码帮助我实现与B的聊天,但是A应该首先点击该项目为“ChatActivity”。

如何在'FriendsActivity'接收消息,并提供不同的提示,例如“你有来自acount C的新消息”(acount C是A的朋友)。然后,当我点击C项目'聊天活动可以显示来自C的消息。

1 个答案:

答案 0 :(得分:0)

这实际上是一个涉及的问题,有几件事需要考虑;

当您按下时,活动会被销毁,因此您很可能需要一种持久存储该聊天数据的方法,这种方式可用于每个活动(如数据库)。 (是你的处理程序类??)。

所以

  1. 按照您的要求在好友活动中连接并添加chatManager 代码
  2. 收到消息(processMessage())通过从消息中获取JID来更新好友列表,循环访问适配器数据,直到找到合适的好友并更新该视图的方式。 (请记住,如果你像ArrayList一样循环访问适配器基础数据,那么当Android回收视图时,列表中视图的位置不是数据的位置,所以你必须从位置中减去list.getFirstVisiblePosition()你的ArrayList数据)
  3. 将onClickListener()添加到好友列表中的每个好友。 (利用自定义适配器来发送每个朋友)
  4. 在onClickListener中,向chatActivity传递一个包含聊天主体对象及其所在朋友的JID的意图。这是让数据库变得简单的地方,因为您可以将chatActivity传递给intent中的JID并查找与该JID相关联的所有消息。
  5. 希望有所帮助