【问题标题】:Getting MucConfigurationNotSupportedException In android smack 4.2.0-beta1在 android smack 4.2.0-beta1 中获取 MucConfigurationNotSupportedException
【发布时间】:2016-12-06 05:50:41
【问题描述】:

我正在为一对一聊天和群聊开发聊天应用程序。

我已经成功地进行了一对一的聊天。

使用下面的链接我创建了群聊。

Link to create Group chat in smack 4.2.0-beta1

我可以在管理面板中看到该组,但只有一个用户可用,但我创建了这个包含三个成员的组。 在这里我添加了我的代码。

 public void createGroupChat() {

        String DomainName = "conference."+ServiceAddress;
        // Create a MultiUserChat using a Connection for a room
// Get the MultiUserChatManager
        MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
        try {
            EntityBareJid jid = JidCreate.entityBareFrom("mychatroom3" + "@"
                    + DomainName);

// Create a MultiUserChat using an XMPPConnection for a room
            MultiUserChat muc = manager.getMultiUserChat(jid);

// Prepare a list of owners of the new room
            Set<Jid> owners = JidUtil.jidSetFrom(new String[]{"admin" + "@"
                    + DomainName, "dev1" + "@"
                    + DomainName, "dev2" + "@"
                    + DomainName});

// Create the room
            Resourcepart nickname = Resourcepart.from("admin");
            muc.create(nickname).getConfigFormManager().setRoomOwners(owners).submitConfigurationForm();
            muc.join(nickname);
            Log.e("Group chat", "Created");
            Toast.makeText(context,
                    "Group chat" + "Created",
                    Toast.LENGTH_SHORT).show();
        } catch (XmppStringprepException e) {
            e.printStackTrace();
        } catch (MultiUserChatException.MucAlreadyJoinedException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (XMPPException.XMPPErrorException e) {
            e.printStackTrace();
        } catch (MultiUserChatException.MissingMucCreationAcknowledgeException e) {
            e.printStackTrace();
        } catch (NotConnectedException e) {
            e.printStackTrace();
        } catch (SmackException.NoResponseException e) {
            e.printStackTrace();
        } catch (MultiUserChatException.NotAMucServiceException e) {
            e.printStackTrace();
        } catch (MultiUserChatException.MucConfigurationNotSupportedException e) {
            e.printStackTrace();
        }
    }

我遇到的异常

08-01 05:58:14.589 917-917/com.agarangroup.hello W/System.err: org.jivesoftware.smackx.muc.MultiUserChatException$MucConfigurationNotSupportedException: The MUC configuration 'muc#roomconfig_roomowners' is not supported by the MUC service
08-01 05:58:14.590 917-917/com.agarangroup.hello W/System.err:     at org.jivesoftware.smackx.muc.MucConfigFormManager.setRoomOwners(MucConfigFormManager.java:137)
08-01 05:58:14.590 917-917/com.agarangroup.hello W/System.err:     at com.agarangroup.hello.Services.MyXMPP.createGroupChat(MyXMPP.java:331)
08-01 05:58:14.590 917-917/com.agarangroup.hello W/System.err:     at com.agarangroup.hello.slidingtab.chats.GroupChatActivity.onCreate(GroupChatActivity.java:99)

【问题讨论】:

    标签: android xmpp ejabberd smack groupchat


    【解决方案1】:

    有两种情况: 1)您的会议服务不支持所有者(取决于服务器,在您的情况下为 Ejabber,这听起来不正常)

    2) 你的配置表单没有像documentation 说的那样完成,你需要创建一个完整的表单。

    如何解决:替换此行:

     muc.create(nickname).getConfigFormManager().setRoomOwners(owners).submitConfigurationForm();
    

    与:

    muc.create(nickname);
    Form form = muc.getConfigurationForm().createAnswerForm();
    form.setAnswer("muc#roomconfig_roomowners", owners);
    muc.sendConfigurationForm(form); 
    

    注意名字:

    你的域名是服务会议名称+服务器域名。 所有者可以是 JID (foo@myserver) 并且与服务无关(因此 foo@service.myserver 它不是有效用户,即使服务器会接受它) .

    修复你的所有者:

    "admin" + "@" + ServiceAddress, "dev1" + "@" + ServiceAddress, "dev2" + "@" + ServiceAddress
    

    【讨论】:

    • 我还有一个疑问,我无法创建新用户,它说“禁止身份验证”在我提供的服务器配置中注册允许所有人。但它不起作用。你能告诉我为什么我会收到这个错误吗? @MrPk
    • 很难在评论中回复,打开另一个问题并确保描述用例(客户端、案例和方法)。如果您对 Spark 有疑问,可能您错过了服务器名称,如果您对 java 代码有疑问,我必须检查
    • 谢谢。海,我在这里创建了新问题我添加了链接stackoverflow.com/questions/38718282/…
    • 我使用上面的 code.form.setAnswer("muc#roomconfig_roomowners", owners);说“找不到指定变量的字段。”你能帮帮我吗? @MrPk
    • 目前我无法得到任何检查,您需要自己验证什么是“muc#roomconfig_roomowners”,也许新版本的 Smack 只是更改了这个标志的名称。每次都可以检索要求空表单的参数的全名。希望有帮助。 @D G
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2017-01-12
    • 2017-12-01
    • 2016-12-07
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多