为 MultiUserChat 添加监听器 (aSmack)
Posted
技术标签:
【中文标题】为 MultiUserChat 添加监听器 (aSmack)【英文标题】:Adding Listeners for MultiUserChat (aSmack) 【发布时间】:2013-04-17 06:25:38 【问题描述】:我们如何初始化 MultiuserChat,这些是细节,要创建 MultiuserChat 类的对象,我们需要连接和房间名称作为参数 // 这是 MultiUserChat 的构造函数
public MultiUserChat(Connection connection, String room)
this.connection = connection;
this.room = room.toLowerCase();
init();
只有在我们有房间的情况下才适用。如果我们在一个房间里。我的问题是,如果我们不在房间内,或者我们没有加入/创建任何房间,我们如何初始化 MultiUserChat 类。因为要添加诸如邀请拒绝和 addinvitationListener 之类的侦听器,我们需要 MultiUserChat 的对象。
eg. muc.addInvitationRejectionListener(new InvitationRejectionListener()
@Override
public void invitationDeclined(String invitee, String reason)
Log.e("CHECK", "Invitation rejected, Inv- "+invitee+": Reas- "+reason);
Toast.makeText(getApplicationContext() , "Invtn REJECTED, invitee- "+invitee+" :reason-"+reason,
Toast.LENGTH_LONG).show();
);
【问题讨论】:
如果有人想否决这个问题,请提供原因。 你有没有想过这个问题?如果是这样,您可以在这里分享详细信息吗? 对不起,我没有工作文件,我想我已经解决了。但我不记得了。我会尽力为你找到它。给我一些时间。 【参考方案1】:你的假设是错误的。创建 MultiUserChat 实例不会使客户端自动加入或创建此 MUC。
所以只需创建实例并添加侦听器。
【讨论】:
【参考方案2】:您不需要MultiUserChat
的对象来获得邀请。您可以使用以下代码。
MultiUserChat.addInvitationListener(conn3, new InvitationListener()
public void invitationReceived(XMPPConnection conn, String room, String inviter,
String reason, String password)
// Reject the invitation
MultiUserChat.decline(conn, room, inviter, "I'm busy right now");
//Accept the invitation
MultiUserChat muc=new MultiUserChat(conn,room);
muc.join(testNickName,password);
对于邀请拒绝侦听器,您需要一个 MultiUserChat
对象。
【讨论】:
以上是关于为 MultiUserChat 添加监听器 (aSmack)的主要内容,如果未能解决你的问题,请参考以下文章
Smack - 何时调用 MultiUserChat.Join(...)
如何使用 aSmack 获取 MultiUserChat 房间的 DiscussionHistory?