Как сохранить экземпляр MultiUserChat? - PullRequest
0 голосов
/ 02 августа 2020

Я создаю MU C в своем приложении и отправляю приглашение своим друзьям. В клиентском приложении моего друга я могу получить приглашение и присоединиться к комнате.

override fun invitationReceived(
    conn: XMPPConnection?,
    room: MultiUserChat?,
    inviter: EntityJid?,
    reason: String?,
    password: String?,
    message: Message?,
    invitation: MUCUser.Invite?
) {
    Log.d(TAG, "Invitation Received")
    room?.join(Resourcepart.from(ApplicationClass.connection.user.toString()))
    Log.d("JID", room.toString()+"  "+room?.isJoined)

}

Когда я пытаюсь войти в комнату и отправить сообщение с приведенным ниже кодом, я не могу отправить сообщение

submitButton.setOnClickListener {
        try {
            val multiUserChatManager =
                MultiUserChatManager.getInstanceFor(ApplicationClass.connection)
            val muc =
                multiUserChatManager.getMultiUserChat(JidCreate.entityBareFrom("$groupId@conference.localhost"))
            Log.d("JIDDDDD", muc.toString()+"  "+ muc.isJoined)
            muc.sendMessage("Hi all")
        } catch (e: SmackException.NotConnectedException) {
            println(e.stackTrace)
        } catch (e: InterruptedException) {
            println(e.stackTrace)
        }catch (e:XMPPException){
            println(e.stackTrace)
        }
    }

Я понимаю причину этого. Когда я получил приглашение в комнату, я получаю экземпляр muc в поле room invitationReceived.

Но когда я отправляю сообщение в комнату, я создаю новый экземпляр of multiUserChat и muc.isJoined возвращает false. Я хочу использовать тот же экземпляр, который я получил в своем приглашении, для отправки сообщения в комнату. Как мне сохранить этот экземпляр multiUserChat?

...