如何发送消息?安卓,asmack,openfire

Posted

技术标签:

【中文标题】如何发送消息?安卓,asmack,openfire【英文标题】:How to dispatch message? android, asmack, openfire 【发布时间】:2013-08-19 01:55:42 【问题描述】:

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'接收消息并给出不同的提示,例如“你有来自Acount C的新消息”(Acount C是A的朋友)。然后,当我单击 C 项时,“聊天活动可以显示来自 C 的消息。

【问题讨论】:

【参考方案1】:

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

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

所以

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

希望能有所帮助

【讨论】:

我在你回答时实现它。无论如何,谢谢。

以上是关于如何发送消息?安卓,asmack,openfire的主要内容,如果未能解决你的问题,请参考以下文章

如何在安卓本地保存聊天记录?

如何在消息 asmack/smack 中添加其他数据?

Asmack 文件发送错误 503 类型 = 使用 openfire 取消

如何使用 asmack android 从 Openfire 中检索一对一的聊天记录

android asmack+openfire怎么发离线文件

在 asmack 中将项目发送到 pubsub 节点