Я создаю 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
?