android - 使用 aSmack 为 XMPP 群聊创建 MUC 房间时发生 ClassCastException

标签 android xmpp chatroom

我正在使用 aSmack 创建聊天应用程序。当我使用此 aSmack 创建 groupchat 时,它会出错。这是用于创建 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)

我搜索了很多,但仍然不知道如何解决这个问题。

在我拔头发之前,我们将不胜感激。

最佳答案

未注册的 Smack 数据包提供商。您会收到 ClassCastException,因为 Smack 无法为 MUC 创建正确的 Packet 类实例。我建议你使用 newer version of aSmack并按照 README 中的说明进行操作,它应该为您初始化和注册提供者。

关于android - 使用 aSmack 为 XMPP 群聊创建 MUC 房间时发生 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763001/

相关文章:

android - 更改 list 中的主题不起作用

javascript - XMPP 连接到 openfire 服务器

c# - 这个函数如何改变我的只读变量?

javascript -/PM 用于在聊天室发送消息的正则表达式语法

python - SleekXMPP Muc 房间列表和发现

c# - 如何向下滚动到多行 TextBox 的底线,Javascript 的 scrollIntoView 对此不起作用

android - 一个 Activity 有多少个状态?

android - Android 中使用 Geo 的默认 Google map

android - 找不到方法 maven()

php - 如何在 AWS linux 服务器上安装 ejabberd?