具有所有者权限的多用户聊天室加入 android + asmack

Posted

技术标签:

【中文标题】具有所有者权限的多用户聊天室加入 android + asmack【英文标题】:Multi User Chat room join with owner privilege android + asmack 【发布时间】:2014-03-27 06:37:42 【问题描述】:

多用户聊天室加入

如何在 android 中以“所有者”身份加入多用户聊天室?目前我正在使用以下代码加入多用户聊天室。但是我只是作为参与者加入。

MultiUserChat muc = new MultiUserChat(connection, group);
muc.join(nickNameOfUser, password);

【问题讨论】:

【参考方案1】:

MUC 成员/所有者列表维护在 MUC 服务器端,并自动授予您创建/加入房间的所有者权限。如果您没有获得所有者权限,则房间是由其他人创建的。

【讨论】:

@vitalyster..即使我加入了我创建的房间,我仍然以参与者的身份加入。我正在使用以下代码创建房间。名册名册 = getRoster(account); roster.createGroup(nick); 不是房间创建代码,使用:MultiUserChat muc = new MultiUserChat(connection, group); muc.create(nickNameOfUser); @vitalyster...我尝试使用您提出的 MultiUserChat 对象创建房间。但它给了我一个 ClassCastException。 ClassCastException 在您尝试转换不兼容的对象时抛出,与 MUC 所有权无关。显示您的完整代码和完整错误。【参考方案2】:
// In Smack version 4.1.4 i am able to join Room by following way.

MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
manager.addInvitationListener(new InvitationListener() 
                    @Override
                    public void invitationReceived(XMPPConnection conn, MultiUserChat room, String inviter, String reason, String password, Message message) 
                        try 
                            room.join(userName);
                         catch (SmackException.NoResponseException e) 
                            e.printStackTrace();
                         catch (XMPPException.XMPPErrorException e) 
                            e.printStackTrace();
                         catch (SmackException.NotConnectedException e) 
                            e.printStackTrace();
                        
                    
                );

【讨论】:

以上是关于具有所有者权限的多用户聊天室加入 android + asmack的主要内容,如果未能解决你的问题,请参考以下文章

如果用户不在聊天室中,Android quickblox 如何接收消息

如何授予新创建的角色权限以使用 JDA 库加入新创建的语音聊天?

XMPP Smack 聊天应用程序中的多设备支持

如何使用 smack-android:4.1.4 在多用户聊天室中解禁用户

填充具有访问权限的多对多表

XMPP:只读多用户聊天