概述
点击联系人列表中的好友,跳转到聊天界面ChatActivity
①使用软件包org.jivesoftware.smack.chat2里的ChatManage类
软件包org.jivesoftware.smack.chat已过时。里面的createChat,addChatListener方法也不推荐使用
②相关函数
在chat2包的ChatManage类有以下方法:
我们可以对照上面表格中的函数来创建会话和收发消息
③简单的创建会话和收发消息代码
获得实例:
chatManage= ChatManager.getInstanceFor(conn)
监听和发送消息
//接收消息监听,发送消息 //貌似监听代码要写在发送消息代码之前 chatManage!!.addIncomingListener(object:IncomingChatMessageListener{ override fun newIncomingMessage(from: EntityBareJid?, message: Message?, chat: Chat?) { println("from:$from") println("message:$message") println("message:${message!!.body}") println("chat:$chat") } }) var jidStr=XmppStringUtils.completeJidFrom(friendName,conn!!.xmppServiceDomain.domain) //println("JidStr是:$jidStr") //与好友开启一个会话 var chat:Chat=chatManage!!.chatWith(JidCreate.entityBareFrom(jidStr)) //尝试发送一条消息 chat.send("~~~hello~~~my~~dear~friend") var msg: Message = Message() msg.body="a message" chat.send(msg)
运行:
这里我只是点击跳转到聊天界面就自动发两条消息。
④后续
聊天界面优化。大概就是一个ListView或其他控件,适配条目分为接收到的消息和发出去的消息,一个在左,一个在有。在监听到发出去消息,和收到消息的时候,更新适配的数据就行了~