我正在使用aSmack
来创建聊天应用程序。当我使用此groupchat
创建aSmack
时,它会出错。这是用于创建GroupChat
的代码。
MultiUserChat muc = new MultiUserChat(connection, "xyz@abc.com");
try {
muc.create(u_name);
Form form = muc.getConfigurationForm();
Form submitForm = form.createAnswerForm();
for (Iterator<FormField> fields = form.getFields(); fields.hasNext();) {
FormField field = (FormField) fields.next();
if (!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable() != null) {
submitForm.setDefaultAnswer(field.getVariable());
}
}
List<String> owners = new ArrayList<String>();
Log.i(TAG, "list of owners=====" +owners.toString());
owners.add(PmUser_name);
submitForm.setAnswer("muc#roomconfig_roomowners", owners);
muc.sendConfigurationForm(submitForm);
} catch (XMPPException e) {
e.printStackTrace();
}
这是我用于aSmack asmack-2010.05.07.jar
的jar。它支持facebook xmpp,Gtalk xmpp和我自己的服务器xmpp聊天。现在我想为自己的服务器创建群组聊天,但它会出现此错误。
E/AndroidRuntime(31002): Caused by: java.lang.ClassCastException:
org.jivesoftware.smack.packet.DefaultPacketExtension
E/AndroidRuntime(31002): at
org.jivesoftware.smackx.muc.MultiUserChat.getMUCUserExtension(MultiUserChat.java:2000)
E/AndroidRuntime(31002): at
org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:364)
我经常搜索,但仍然不知道如何解决这个问题。
在我拔头发之前,任何帮助都会受到赞赏。
答案 0 :(得分:4)
Smack的数据包提供商未注册。您得到ClassCastException
,因为Smack无法为MUC创建正确的Packet类实例。我建议您使用newer version of aSmack并按照README中的说明进行操作,该说明应该为您初始化并注册提供商。