openfire+smack 如何监听好友昵称及其头像修改事项?

问题描述

请问如何监听好友的昵称头像等Vcard的变化?从而修改自己的好友列表上的显示?我明白可以监听好友的离线及其上线状态?比如用以下代码即可。finalRosterroster=Client.getRoster();roster.addRosterListener(newRosterListener(){@OverridepublicvoidentriesAdded(Collection<String>arg0){//TODOAuto-generatedmethodstubSystem.out.println("--------EE:"+"entriesAdded");}@OverridepublicvoidentriesDeleted(Collection<String>arg0){//TODOAuto-generatedmethodstubSystem.out.println("--------EE:"+"entriesDeleted");}@OverridepublicvoidentriesUpdated(Collection<String>arg0){//TODOAuto-generatedmethodstubSystem.out.println("--------EE:"+"entriesUpdated");}@OverridepublicvoidpresenceChanged(Presencearg0){//TODOAuto-generatedmethodstubSystem.out.println("--------EE:"+"presenceChanged这里可以监听用户离线或者上线");}});

但是我不知道如何去监听好友的昵称和头像的修改?举例情况:比如我的好友上线的时候修改了昵称。然后下线了。这时候我才上线?可以离线收到他修改了昵称吗?及其头像也一样。(这个监听到的修改事项信息,可以在线或者离线收到。)谢谢各位。

解决方案

解决方案二:
该回复于2014-06-09 09:07:24被版主删除
解决方案三:
不小心瞄到了就跟你说下你说的这个是不需要监听的也不叫离线获取因为你的好友修改的头像是保存在服务器的,他修改他的不关你的事你只要执行如下操作就可以拿到他修改的头像了1、使用xmppConnection.getRoster拿到属于你好友的那个RosterEntry,这个地方怎么遍历我就不说了2、使用vcard.load(xmppConnection,RosterEntry.getUser());得到vard对象vard.getAvarar就是你想要的头像只要你在调用这两部的时候,用户已经修改了头像那你拿到的就是他修改后的头像。
解决方案四:
有两个原因,我需要监听1、监听到改变事件了,我再去服务端获取然后存到本地,用于界面显,这样比较实时地反应所有用户的状态。2、如果得不到离线的监听,为了保持跟服务端数据一致(实时性),我就得每次都去服务端全量取一次,这样也比较耗流量,并且也影响程序性能。如果可以不监听的话,如何才能满足以上两个要求呢,有其他方法吗,请各位大侠指正。
解决方案五:
楼主解决了吗?我也遇到了相同的问题,求助
解决方案六:
楼主,解决了木有,我也搜了好久,但也木有找到合适的解决办法
解决方案七:
同志们请使用VCardEventDispatcher.addListener进行监听,看下源码就知道了

时间: 2024-08-10 04:54:09

openfire+smack 如何监听好友昵称及其头像修改事项?的相关文章

关于环信监听好友状态事件的实现问题

问题描述 调用环信SDK添加好友,EMContactManager.getInstance().addContact(toAddUsername, reason);比如x1添加x2,x2同意之后,在服务器中,立马能看到x2的好友列表有x1,但是x1的好友列表没有x2,他们说是没有实现监听好友状态事件EMContactManager.getInstance().setContactListener(new EMContactListener() {@Overridepublic void onCo

监听好友事件EMContactListener中onContactAdded不进

问题描述 我新注册一个用户,然后登录添加好友,首次添加的时候进onContactAgreed,但是不进onContactAdded,然后我把好友删了在重新操作,又好了,每次创建帐号第一次添加好友都不进onContactAdded事件,在添加就没事,这是个什么情况,如果不监听就全都不进,现在是第一次不进,然后就正常,而且首次添加都能收到通知,可是因为不进add事件导致好友列表没有该好友,我的监听事件是写在main里面的 解决方案 这句代码写了没EMChat.getInstance().setApp

监听好友状态事件,离线状态新增的好友状态变更。如何在上线后获取?

问题描述 EMContactManager.getInstance().setContactListener(new EMContactListener()) 解决方案 这个下次上线服务器会把消息发过来的,监听还是可以监听到!

急急急!!如何监听好友给你发了实时语音或视频消息

问题描述 如官方文档所说 注册广播IntentFilter callFilter = new IntentFilter(EMChatManager.getInstance().getIncomingCallBroadcastAction());registerReceiver(new CallReceiver(), callFilter);private class CallReceiver extends BroadcastReceiver {@Overridepublic void onRe

js监听表单value的修改同步问题,跨浏览器支持_表单特效

想要实现的功能大概是这样的: 有两个文本框,其中一个只读,另一个可以输入.要求在可输入文本框中输入文本时,只读文本框能够获得输入的值,且只读文本框旁边出现提示信息,实时显示只读文本框的内容. 这个功能看是简单,但其实并没有想象的那么简单.(注意,可输入框的处理没什么可讨论的,关键是只读框的处理) 一开始,我们一般会想到在只读文本框上运用onchange事件.一试,发现onchange根本没用,该事件是在文本框获得焦点,然后内容改变失去焦点后才触发的,现在在只读文本框上根本没有这些,它的内容是通过

基于xmpp openfire smack开发之smack类库介绍和使用[2]

关于Smack编程库,前面我们提到,它是面向Java端的api,主要在PC上使用,利用它我们可以向openfire服务器注册用户,发送消息,并且可以通过监听器获得此用户的应答消息,以及构建聊天室,分组,个人通讯录等等. 下面我们写几个程序小例子测试一下. (1)登录操作 [java] view plaincopy PPConnection.DEBUG_ENABLED = true;   AccountManager accountManager;   final ConnectionConfig

android 自定义adapter中,在监听事件里修改控件属性

问题描述 ViewHolderviewHolder=null;if(null==convertView){viewHolder=newViewHolder();....................viewHolder.bbs_like_img=(ImageView)convertView.findViewById(R.id.bbs_like_img);}else{viewHolder=(ViewHolder)convertView.getTag();}监听点击事件,修改bbs_like_im

[20151023]不启动监听远程能连接数据库吗?

[20151023]不启动监听远程能连接数据库吗?.txt --如果有人问你不启动监听远程能连接数据库吗?我想我开始的回答不行. --但是不要忘了,oracle支持专有服务器以及共享服务器模式,而共享服务器模式可以不使用1521端口,这样就可以不用启动监听远程连 --接服务器. --通过测试来说明问题. 1.测试环境: SYS@test> @ver1 PORT_STRING                    VERSION        BANNER --------------------

监听加好友请求

问题描述 好友请求的监听  应该怎么注册啊   一般在哪里注册    环信的文档看不懂啊 解决方案 添加代理,收到好友申请会触发didReceiveBuddyRequest这个回调.