【问题标题】:Smack 4.2.0-beta1 Error in creating group chat 'MultiUserChat. Cannot be accessed from outside packageSmack 4.2.0-beta1 创建群聊“MultiUserChat”时出错。无法从外部包访问
【发布时间】:2016-07-28 07:18:24
【问题描述】:

我正在开发聊天应用程序。我已经进行了一对一的聊天。但我无法创建群聊,因为它显示以下错误

    'MultiUserChat(org.jivesoftware.smack.XMPPConnection, org.jxmpp.jid.EntityBareJid, org.jivesoftware.smackx.muc.MultiUserChatManager)' is not public in 'org.jivesoftware.smackx.muc.MultiUserChat'. 
Cannot be accessed from outside package

我看到了一些关于使用multiUserChat = new MultiUserChat(connection,room_name);创建群聊的答案。

但是在 4.2.0-beta1 版本中不允许我们访问这个类。

我在下面添加了我的代码

 public void createGroupChat() {
            // Create a MultiUserChat using a Connection for a room
    // (room name as the second parameter)
            try {
                Resourcepart nikname = Resourcepart.from("admin");

                MultiUserChat mMultiUserChat = new MultiUserChat(connection, "room@conference.myserver");
                mMultiUserChat.create(nikname);
                Form form = mMultiUserChat.getConfigurationForm().createAnswerForm();
                form.setAnswer("muc#roomconfig_publicroom", true);
                form.setAnswer("muc#roomconfig_roomname", "room");
                form.setAnswer("muc#roomconfig_roomowners", "owner");
                form.setAnswer("muc#roomconfig_persistentroom", true);
                mMultiUserChat.sendConfigurationForm(form);
            } 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();
            }
        }

谁能告诉我如何在最新的 smack 4.2.0-beta1 版本中创建群组?

如果我问错了什么对不起。

【问题讨论】:

    标签: android xmpp ejabberd smack


    【解决方案1】:

    我从下面的链接中找到了创建群聊的答案

    https://github.com/igniterealtime/Smack/blob/master/documentation/extensions/muc.md

    我也添加了我的新代码。它可能对其他一些开发人员有所帮助

     public void createGroupChat() {
            // Create a MultiUserChat using a Connection for a room
    // Get the MultiUserChatManager
            MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
            try {
                EntityBareJid jid = JidCreate.entityBareFrom("myroom" + "@"
                        + context.getString(R.string.serviceNameOld));
    
    // 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[]{"mathan@example.org", "kumar@example.org"});
    
    // Create the room
                Resourcepart nickname = Resourcepart.from("mathan");
                muc.create(nickname).getConfigFormManager().setRoomOwners(owners).submitConfigurationForm();
    
            } 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();
            }
        }
    

    【讨论】:

    • 你真的应该在这里使用 multi-catch ;)
    • 它给了我一个警告信息来添加 catch 这就是我添加的原因。 :(@流
    • 我写的是你应该在这里使用multi-catch,而不是你不应该捕获异常。
    • @Flow 我收到以下错误“MUC 服务不支持 MUC 配置 'muc#roomconfig_roomowners'”你能告诉我如何解决这个问题吗?
    猜你喜欢
    • 2017-01-12
    • 2016-12-06
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多