Android(安卓)xmpp开发 asmack获取离线在线添加好友消息 及 好友上线下线通知
16lz
2021-01-26
直接上代码,看注释应该很好理解,只是提供一种思路,不对的请大神指正:
public class PresenceService extends Service {private _ConnectionControl cc = _ConnectionControl.getCC();//单例模式 保存了当前的链接@Overridepublic IBinder onBind(Intent arg0) {return null;}@Overridepublic void onCreate() {super.onCreate();}@Overridepublic void onDestroy() {super.onDestroy();Log.i("onDestroy", "PresenceService -- onDestroy");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.i("Presence", "PresenceService-----" + (cc.connection == null));if (cc.connection != null && cc.connection.isConnected()&& cc.connection.isAuthenticated()) {//已经认证的情况下,才能正确收到Presence包(也就是登陆)final String loginuser = cc.connection.getUser().substring(0,cc.connection.getUser().lastIndexOf("@"));//理解为条件过滤器 过滤出Presence包PacketFilter filter = new AndFilter(new PacketTypeFilter(Presence.class));PacketListener listener = new PacketListener() {@Overridepublic void processPacket(Packet packet) {Log.i("Presence", "PresenceService------" + packet.toXML());//看API可知道 Presence是Packet的子类if (packet instanceof Presence) {Log.i("Presence", packet.toXML());Presence presence = (Presence) packet;//Presence还有很多方法,可查看API String from = presence.getFrom();//发送方String to = presence.getTo();//接收方//Presence.Type有7中状态if (presence.getType().equals(Presence.Type.subscribe)) {//好友申请} else if (presence.getType().equals(Presence.Type.subscribed)) {//同意添加好友} else if (presence.getType().equals(Presence.Type.unsubscribe)) {//拒绝添加好友 和 删除好友} else if (presence.getType().equals(Presence.Type.unsubscribed)) {//这个我没用到} else if (presence.getType().equals(Presence.Type.unavailable)) {//好友下线 要更新好友列表,可以在这收到包后,发广播到指定页面 更新列表} else {//好友上线}}}};cc.connection.addPacketListener(listener, filter);}return super.onStartCommand(intent, flags, startId);}}
更多相关文章
- Android集成极光后部分机型收到通知
- Android(安卓)Preferences的使用
- Android(安卓)OpenGL ES和OpenGL一起学(二)------理解Viewport(视口
- 对Android(安卓)opengl ES世界坐标系和纹理坐标系的理解
- Android中关于数据库SQLite的insert插入操作的理解
- [置顶] android 深入理解AnsyncTask
- android,java优秀博客链接汇总分享。。。不定期更新
- 深入理解ActivityManagerService,你知道的不知道的全在这里!
- 关于android下audioflinger+alsa+a2dp+pcm+bluez+sbc编码理解