я использую aSmack (порт Smack для Android) для подключения и связи с сервером XMPP (Openfire 3.7.1). я могу заставить многопользовательский чат работать до отправки сообщений с помощью класса MultiUserChat. однако вызов любого метода, который перечисляет обитателей комнаты, завершается ошибкой. соответствующий код:
setDefaultConnection();
if(connection!=null) {
mMuc = new MultiUserChat(connection, "[email protected]");
try {
mMuc.join("chester");
mMuc.getModerators(); //line 71
ArrayList<Affiliate> dudes = new ArrayList<Affiliate>(mMuc.getMembers());
Iterator<Affiliate> iter = dudes.iterator();
while(iter.hasNext()) {
Affiliate dude = iter.next();
Log.w(this.getClass().getName(), dude.getNick());
}
} catch(XMPPException xmppe) {
Log.w(this.getClass().getName(), "MUC error: "+xmppe.getMessage());
}
}
Логкат:
07-10 13:38:56.248: ERROR/AndroidRuntime(13003): FATAL EXCEPTION: main
java.lang.ClassCastException: org.jivesoftware.smack.util.PacketParserUtils$2
at org.jivesoftware.smackx.muc.MultiUserChat.getOccupants(MultiUserChat.java:1797)
at org.jivesoftware.smackx.muc.MultiUserChat.getModerators(MultiUserChat.java:1761)
at org.apache.android.xmpp.XMPPClient$1.onClick(XMPPClient.java:71)
at android.view.View.performClick(View.java:2532)
что-то не так с библиотекой или я что-то не так делаю? getOccupants() работает.
Пример MultiUserChat и javadocs:
http://www.igniterealtime.org/builds/smack/docs/latest/javadoc/
http://www.igniterealtime.org/builds/smack/docs/latest/documentation/extensions/index.html
aSmack:
http://code.google.com/p/asmack/< br> http://code.google.com/p/asmack/issues/detail?id=72