我正在尝试更新三个客户端的存在,其中两个是 Adium 和 Pidgin,一个是我的自定义构建应用程序。当我从我的应用程序发送状态时,它的工作设置可用且状态为“在房间内”:
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 可以相互配合。我意识到由于我的应用程序出了点问题。我实现了存在数据包侦听器:如果我从 Pidgin 或 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));