Я пытаюсь обновить присутствие на трех клиентах, два из которых - Adium & Pidgin и одно мое приложение для пользовательской сборки. когда я посылаю присутствие с моей App работает доступными наборы и статус на «В номере»:наличие на нескольких ресурсах 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 что-то не так. Я реализовал наличие пакета слушателя: если я изменю присутствие от 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));
Я думаю, вы хотели написать, что слушателя никогда не увольняют, так? – Flow
он срабатывает, и я получаю свое присутствие, но когда получил свое присутствие, если попытаюсь отправить новое присутствие в connection.sendPacket (pres). Он постоянно начинает отправлять присутствие. –