android - 在smack中显示以前聊天记录的联系人/ friend 列表

标签 android chat openfire smack

我可以使用 Smack ( doc ) 提供的 MamManager 类来获取一对一聊天的存档消息。但我需要在列表中显示用户列表以及最新消息,类似于应用程序的功能。

enter image description here

有人知道如何使用 smack 和 openfire 来实现这一目标吗?任何帮助,将不胜感激。谢谢

最佳答案

使用 Roster 类在 Smack 中获取联系人。还将这些联系人保留在本地数据库中以获得离线支持。

用于实现 Whatsapp 之类的联系人导入。您必须从设备中获取联系人并将其添加到您的名册中。实现此目的的理想方法是通过 Rest-API 发送联系人,并让服务器将它们添加到您的名册中。

初始化连接对象后,您可以附加一个花名册监听器,如下所示:

val connection:XMPPTCPConnection // assuming you have the connection object
val roster = Roster.getInstanceFor(connection)
// NOTE: You should attach your roster listener even before calling connect() on your connection object.
// This way you get the roster list whenever the connection connects!
roster.addRosterLoadedListener(object:RosterLoadedListener{
    override fun onRosterLoaded(roster: Roster?) {
        // Update your database
    }
    override fun onRosterLoadingFailed(exception: java.lang.Exception?) {
        // Handle error
    }
})

要持久保存消息,您必须使用本地数据库(SQLite 或某些 ORM)

关于android - 在smack中显示以前聊天记录的联系人/ friend 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45590629/

相关文章:

android - 使用FeatureDetector OpenCv Android时出错

java - 使用 websocket 从多个设备聊天

android - 使用 Retrofit simplexml 转换器时出现编译错误

android - LinearLayout 里面的 TextView 和 Checkbox,但是 Checkbox 消失了

安卓应用 : How to get screen tilt?

php - 使用 php 和 mysql 自动注销

java - 在 MAC OS X 中设置 Openfire

java - 无法通过XMPP登录openfire帐户

android - 如何固定最后一个页脚(ListView)

c# - 需要有关 C# Twitch 机器人的帮助