我有办法使用常规数据包过滤器监听传入的MultiUserChat。
现在我有一个类来处理所有传入的数据包并根据类型处理它们。
例如,如果数据包是消息的实例,则将其添加到数据库中并发送广播。
这就是我在监听传入数据包的方式
public void registerListener(){
Log.d("XMPP","New thread created for Message Listener");
Thread t = new Thread(new Runnable() {
@Override
public void run() {
Log.d("XMPP","Message Listener Registered");
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class));
PacketCollector collector = connection.createPacketCollector(filter);
while (true) {
Packet packet = collector.nextResult();
packetManager.handlePacket(packet);
}
}
});
t.start();
}
答案 0 :(得分:1)
Smack已经为此提供了一个API:MultiUserChat.addInvitationListener(InvitationListener)
BTW:你的代码中是否有使用PacketCollector而不是PacketListener的原因?我建议在可能的情况下使用PacketListener。