openfire+smack添加好友申请 Smack 4.1.8 and 4.2.0-beta2 添加好友请求以及确认
来源:互联网 发布:2017优化设计政治答案 编辑:程序博客网 时间:2024/06/10 15:23
openfire Smack 4.1.8 and 4.2.0-beta2 添加好友请求确认
首先说一下我踩的坑,以前的方法过期,会有用户名过长无法接收,无法过滤,丢失请求,发送无效等等问题,博客一大堆不更新,都是老版本的坑,这里直接上传以前的过期示意图
请大家不要再写以下的代码
老版本addPacketListener
老版本listener如下:
现在我的包是
Smack 4.1.8 and 4.2.0-beta2其实是一样的,我这里用的不是后者测试版,选的前者4.1.8
compile 'org.igniterealtime.smack:smack-android-extensions:4.1.8'compile 'org.igniterealtime.smack:smack-tcp:4.1.8'
先直接上传最新写法:
新版本add监听
//条件过滤器AndFilter filter = new AndFilter(new StanzaTypeFilter(Presence.class));//添加监听mConnection.addAsyncStanzaListener(packetListener, filter);
新版本listener
static StanzaListener packetListener = new StanzaListener() { @Override public void processPacket(Stanza packet) throws SmackException.NotConnectedException { if (packet instanceof Presence) { Presence presence = (Presence) packet; String fromId = presence.getFrom(); String from = presence.getFrom().split("@")[0];//我这里只为了打印去掉了后缀 if (presence.getType().equals(Presence.Type.subscribe)) { YbLogUtil.d("yangbinnew请求添加好友" + from); } else if (presence.getType().equals(Presence.Type.subscribed)) {//对方同意订阅 YbLogUtil.d("yangbinnew同意订阅" + from); } else if (presence.getType().equals(Presence.Type.unsubscribe)) {//取消订阅 YbLogUtil.d("yangbinnew取消订阅" + from); } else if (presence.getType().equals(Presence.Type.unsubscribed)) {//拒绝订阅 YbLogUtil.d("yangbinnew拒绝订阅" + from); } else if (presence.getType().equals(Presence.Type.unavailable)) {//离线 YbLogUtil.d("yangbinnew离线" + from); } else if (presence.getType().equals(Presence.Type.available)) {//上线 YbLogUtil.d("yangbinnew上线" + from); } } } };
演示请求效果
处理好友请求
同意(或者拒绝)
Presence pres = new Presence(Presence.Type.subscribed);//拒绝unsubscribed pres.setTo(fromId); try { XMPPConnectionService.getmConnection().sendStanza(pres); } catch (SmackException.NotConnectedException e) { e.printStackTrace(); }
添加好友
//添加好友Roster roster = Roster.getInstanceFor(getmConnection());roster.createEntry(friendName.trim() + "@" + Constant.XMPP_HOST, name, new String[]{"Friends"});
删除好友
Roster roster = Roster.getInstanceFor(getmConnection());RosterEntry entry = roster.getEntry(user);roster.removeEntry(entry);
根据自己需求
有同步和异步,上一个则一次性无序全部给你,下一个则一个个给你
这里还有一个好友动态监听,比上面简单些,但只有Added的好友,若没有好友权限添加,则可以用这个,若需要手动确认添加好友,则按上面所示
RosterListener listener =new RosterListener() { @Override public void entriesAdded(Collection<String> addresses) { } @Override public void entriesUpdated(Collection<String> addresses) { } @Override public void entriesDeleted(Collection<String> addresses) { } @Override public void presenceChanged(Presence presence) { } };
**qq:1250211588,有任何问题,可以咨询我,谢谢
0 0
- openfire+smack添加好友申请 Smack 4.1.8 and 4.2.0-beta2 添加好友请求以及确认
- openfire+smack添加好友申请及好友对申请响应监听
- openfire+smack添加好友申请及好友对申请响应监听
- openfire+smack添加好友申请及好友对申请响应监听
- Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现【4】监听别人的添加好友申请与好友删除的设计
- 基于openfire+smack开发Android即时聊天应用[三]-账号信息、添加好友、JID理解等
- 基于Openfire Smack开发即时通讯应用、获取离线消息,发送消息,联系人列表,添加好友(三)
- 基于openfire+smack开发Android即时聊天应用[二]-账号信息、添加好友、JID理解等
- 基于openfire+smack开发Android即时聊天应用[三]-账号信息、添加好友、JID理解等
- smack API 发送好友请求
- openfire+smack使用ListFragment加载好友列表
- Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现【3】添加分组,添加好友,读取好友列表的实现
- 【openfire添加好友流程】
- openfire 自动添加好友
- openfire 添加好友
- 【openfire添加好友流程梳理】
- openfire添加好友流程梳理
- 03环信好友管理 - 添加好友(好友申请)
- Java中避免NullPointerException的一些方法
- java经典编程题
- imageView加载图片中setImageUri和setImageBitmap的区别
- 高斯算法实现毛玻璃背景图片
- 算法--偏差,方差,标准差,协方差,相关系数及相关理解
- openfire+smack添加好友申请 Smack 4.1.8 and 4.2.0-beta2 添加好友请求以及确认
- 实现微信和QQ图片加载显示进度的效果-LoadingProgress
- GIT贡献统计
- HelloCharts(一、LineChart)
- Windbg使用
- 【Android】Broadcast广播机制总结
- 自定义简易实现 曲面效果
- Oracle概述
- css超出宽度显示省略号