我的问题是,我不能接受加入聊天室。我使用的是openfire服务器3.8.2和asmack库asmack-Androd-16.jar。当我调用getJoinedRooms函数时,我会收到没有找到的错误。虽然我可以看到用户是从管理控制台在房间中加入的。是服务器问题还是客户端问题,还是与asmack有关的问题?请告诉我,如果有人能够加入聊天室使用openfire和asmack为android。
下面是我如何调用该函数:
Iterator RoomsIterator=MultiUserChat.getJoinedRooms(MyService.getConnection(),"user@192.168.1.3");我也尝试过,但它没有给出响应形式服务器: Iterator RoomsIterator=MultiUserChat.getJoinedRooms(MyService.getConnection(),"user@192.168.1.3/Smack");
请提前帮助我解决我的问题,谢谢。
发布于 2014-03-08 09:26:02
我解决了我的问题,增加了一个分组侦听器后,打电话入室功能。当我得到一个空列表时,当我调试时,我检查这些房间是否在服务器发送的结果xml stanze中返回,因此我运行asmack的getjoinedroom函数,然后手动添加ha数据包侦听器,如下所示:
public void AddPacketListener(){
PacketFilter filter = new IQTypeFilter(IQ.Type.RESULT);
MyService.getConnection().addPacketListener(new PacketListener()
{
public void processPacket(Packet paramPacket) {
if(paramPacket.getFrom().equals(MyService.getConnection().getUser())){
String xml=paramPacket.toXML();
String from[];
System.out.println(xml);
from=paramPacket.getFrom().split("/");
Pattern pattern = Pattern.compile("<item jid=\"(.*?)/>");
Matcher matcher = pattern.matcher(xml);
String parts[];
Roomlist.clear();
while (matcher.find()) {
parts=matcher.group(1).split("@");
Roomlist.add(parts[0]);
}
return;
}
}
},filter);}
https://stackoverflow.com/questions/21489387
复制相似问题