-1

asmack + openfire 开发一个 android IM 应用程序。但我不知道如何接收来自朋友的消息然后发送到相应的聊天。

我有以下功能:连接openfire服务器并登录成功(acount 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”接收消息并给出不同的提示,如“你有来自 C 账户的新消息”(C 账户是 A 的朋友)。然后,当我单击 C 项以“聊天活动可以显示来自 C 的消息”时。

4

1 回答 1

0

这实际上是一个复杂的问题,需要考虑几件事;

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

所以

  1. 根据您的代码在好友活动中连接并添加 chatManager
  2. 收到消息时(processMessage())通过从消息中获取 JID 来更新好友列表,循环通过适配器数据,直到找到合适的好友并以某种方式更新该视图。(请记住,如果您正在循环通过适配器基础数据(如 ArrayList),则列表中视图的位置不是数据的位置,因为 Android 会回收视图,因此您必须list.getFirstVisiblePosition()从 ArrayList 数据中的位置中减去)
  3. 为好友列表中的每个好友添加一个 onClickListener()。(使用自定义适配器显示每个朋友)
  4. 在 onClickListener 中,向 chatActivity 传递一个意图,其中包含聊天主体对象和来自它的朋友的 JID。这就是让数据库变得容易的地方,因为您可以在意图中将 JID 传递给 chatActivity 并查找与该 JID 相关的所有消息。

希望能有所帮助

于 2013-09-03T04:35:02.473 回答