// XMPPClient.java public XMPPClient(Context ctx, AbstractXMPPConnection conn, OnClientAPIResultListener listener) { super(false, "xmpp"); this.conn = conn; this.listener = listener; this.ctx = ctx; } public AbstractXMPPConnection getConnection() { return conn; } public void start(String server, String jid, String password, ClientIdentityParams params) { this.server = server; this.jid = jid; SmackConfiguration.DEBUG = true; try { XMPPTCPConnectionConfiguration config = Authenticator.buildAuthConfig( server, jid, password, true ); conn = new XMPPTCPConnection(config); conn.connect(); conn.login(jid, password, Authenticator.generateXMPPResource()); ... } catch (Exception e) { e.printStackTrace(); listener.onFail(new HashMap<>(), e); } } // SuperChat.java @Override public void join(BaseClient client, String nickname) { if(client instanceof XMPPClient xmppClient) { try { // xmppClient.getConnection returns AbstractXMPPConnection mucm = MultiUserChatManager.getInstanceFor(xmppClient.getConnection()); muc = mucm.getMultiUserChat(JidCreate.entityBareFrom((String) id)); muc.join(Resourcepart.from(nickname)); isJoined = true; requiredAuth = false; } catch (Exception e) { e.printStackTrace(); } } }