如何发送消息?安卓,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 文件发送错误 503 类型 = 使用 openfire 取消
如何使用 asmack android 从 Openfire 中检索一对一的聊天记录