Search code examples
androidxmppejabberdsmack

Smack 4.2.0-beta1 Error in creating group chat 'MultiUserChat. Cannot be accessed from outside package


I am developing Chat application. I have done one to one chat. But I cannot create Group chat because it shows an below error

    '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

I have seen some answers about creating groups everyone using multiUserChat = new MultiUserChat(connection,room_name); to create a Group chat.

But in 4.2.0-beta1 version is not allowing us to access this class.

I have added my code below

 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();
            }
        }

Can anyone tell me how to create group in Latest smack 4.2.0-beta1 version?

If I asked anything wrong sorry for that.


Solution

  • I Found an answer to create group chat from this below link

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

    I have added my new code also. It can be helpful for some of other developers

     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();
            }
        }