问题描述
请问如何监听好友的昵称头像等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进行监听,看下源码就知道了