我想更新三個客戶端上的存在其中兩個是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