Smack4.20实现单聊通讯与监听(2)
来源:互联网 发布:我的贴身校花网络剧 编辑:程序博客网 时间:2024/05/22 11:33
上一篇我们已经粗略的说明了如何连接并且登陆进openfrie,现在开始了解下如何进行通信。
当我们登陆成功后,我们就可以对某个用户发起聊天,代码如下:
public ChatManager getChatManager() { if(chatManager == null){ chatManager = ChatManager.getInstanceFor(connection); } return chatManager; }首先,我们得通过connection获取chatManager管理单聊对象,然后:
public void sendChatMessage(String receive, String body) throws Exception { //接收人jid EntityBareJid jid = JidCreate.entityBareFrom(receive); //获取聊天chat Chat chat = getChatManageWindows(jid); //创建消息对象,消息类型是Message.Type.chat Message message = new Message(jid, Message.Type.chat); message.setBody(body); //发送消息 chat.send(message); }注意,这里的的参数receive是接收消息账号的jid,这里jid是每个用户都特有的账号,可以通过登陆openfire来查看每个账号的jid,jid有严格的格式要求,格式如下;
用户名@openfire服务器名称然后就可以通过JidCreate类来创建jid对象。我这里body参数就是发送的内容,这样就可以发送一个单聊消息,可以通过spark客户端来测试。
单聊消息的监听可以通过实现官方提供的IncomingChatMessageListener监听器接口来监听消息,代码如下:
import android.util.Log;import org.jivesoftware.smack.chat2.Chat;import org.jivesoftware.smack.chat2.IncomingChatMessageListener;import org.jivesoftware.smack.packet.Message;import org.jxmpp.jid.EntityBareJid;/** * 接收消息监听器 * Created by ozy on 2017/4/11. */public class InChatMessageListener implements IncomingChatMessageListener { @Override public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) { //from就是消息的发送方的jid,message即发送的消息对象,chat也就是单聊对象 //获取from发送方的账号,转换成string即可 Log.d("text",from.toString()); //消息内容 Log.d("text",message.getBody()); }}监听器绑定如下:
InChatMessageListener inListener = new InChatMessageListener(this);chatManager.addIncomingListener(inListener);这样我们就可以实现一个简单的单聊应用,由于项目中结合了其他很多不相干的东西,所以只能抽取出来。
下节再来分享下接收离线消息以及好友花名册哈!
阅读全文
0 0
- Smack4.20实现单聊通讯与监听(2)
- Smack4.20实现群聊(4)
- Smack4.20实现接收离线消息与花名册操作(3)
- Smack4.20实现连接登陆(1)
- Android 实现聊天-smack4.19
- smack4.2 返回所有用户信息
- smack4.2 用户登录代码
- socket监听端口实现实时通讯
- 监听手机来电与手机短信往蓝牙发送协议实现通讯
- Java 用JainSip实现服务器端SIP通讯----之监听篇
- erlang 实现与 c++ 通讯
- erlang 实现与 c++ 通讯
- 基于“单端口长连接”进行交易通讯和监听控制命令
- Messenger 实现Activity与Service通讯、进程通讯
- LIS系统通讯程序原理与实现
- LIS系统通讯程序原理与实现
- 用HTTP实现手机与PC通讯
- VB与单片机实现通讯基础
- 世界首台“超越级”光量子计算机在中国诞生
- 用Java编程把学生的成绩从高到低排序
- 2017中国FTTH论坛即将于6月在京召开!
- Promise对象(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败
- If you are behind an HTTP proxy, please configure the proxy set
- Smack4.20实现单聊通讯与监听(2)
- 活动报名 | DevOps&SRE 超越传统运维之道(北京站)
- Maven来搭建Spring+Mybatis+MySql的的搭建实例
- 如何使用XMind制定月计划?
- PHP垃圾回收
- Http协议的认识
- Caused by: org.springframework.data.mapping.PropertyReferenceException: No property name found for t
- Java调用Python脚本并获取返回值
- CMAKE_CURRENT_BINARY_DIR