我想更新三个客户端上的存在其中两个是Adium & Pidgin和我的一个自定义生成应用程序。当我从我的应用程序发送的存在它的工作原理可用,状态设置为“室内”:存在多个资源smack
ConnectionConfiguration connConfig =
new ConnectionConfiguration(host, Integer.parseInt(port), service);
connection = new XMPPConnection(connConfig);
presence = new Presence(Presence.Type.available,"In Room",1,Presence.Mode.available);
connection.sendPacket(presence);
但是,当我更新来自其他IM存在让说Adium的,它没有更新的存在和地位的情况时,我有从我的APP更新的存在,其他明智的Adium和Pidgin彼此合作。我意识到由于我的APP,有些事情出错了。我实现了在场听众报文:如果我改变从洋泾浜或Adium的存在这个监听器监听应该听
connection.addPacketListener(new PacketListener(){
@Override
public void processPacket(Packet presencePkt) {
Presence pres= ((Presence) presencePkt);
presence.setPriority(1);// presence is global variable
switch(pres.getMode()){
case available: presence.setMode(pres.getMode());
//connection.sendPacket(pres);
break;
case dnd: presence.setMode(pres.getMode());
//connection.sendPacket(pres);
break;
default :
break;
}
}
}, new PacketTypeFilter(Presence.class));
我想你想写的听者永远不会被解雇,对吧? – Flow 2013-02-13 18:07:22
它肯定会发生,我得到我自己的存在,但是当我得到我的存在后,如果我尝试发送新的存在vis.sendPacket(pres)。它不断开始发送状态。 – 2013-02-13 18:34:17