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

如何发送消息?android、asmack、openfire,android,message,openfire,asmack,Android,Message,Openfire,Asmack,asmack+openfire开发一个android IM应用程序。但我不知道如何从朋友那里接收信息,然后发送到相应的聊天室 我有以下功能: 连接openfire服务器并登录成功(A帐户)。然后我有一个“FriendsActivity”在ListView中显示所有朋友,单击该项目,然后单击“ChatActivity”。在“聊天活动”中,我创建了一个与帐户B(或另一个帐户)的聊天 代码帮助我实现与B的聊天,但A应首先单击“聊天活动”项 如何在“FriendsActivity”接收消息,并给出不同的

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

我有以下功能: 连接openfire服务器并登录成功(A帐户)。然后我有一个“FriendsActivity”在ListView中显示所有朋友,单击该项目,然后单击“ChatActivity”。在“聊天活动”中,我创建了一个与帐户B(或另一个帐户)的聊天

代码帮助我实现与B的聊天,但A应首先单击“聊天活动”项


如何在“FriendsActivity”接收消息,并给出不同的提示,如“您从帐户C收到了新消息”(帐户C是a的朋友)。然后,当我点击C项到“聊天活动可以显示来自C.

< P>的消息时,这实际上是一个涉及的问题,需要考虑的事情有很多;p> 当您按下back键时,活动将被销毁,因此您很可能需要一种持久存储聊天数据的方法,这种方法可用于每个活动,例如数据库。(这是您的处理程序类吗??)

所以

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

  • 希望这有点帮助

    我在您回答时实施它。不管怎样。
     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
                }
      }