Android 使用 xmpp 接受群聊邀请

Posted

技术标签:

【中文标题】Android 使用 xmpp 接受群聊邀请【英文标题】:Android accept invitation of group chat by using xmpp 【发布时间】:2014-08-19 13:25:35 【问题描述】:

我正在使用下面在 xmpp 中获得邀请进行群聊,并且也成功获得了邀请,但在接受邀请的地方无法接受邀请。

这是我邀请和接受群聊的代码:

     public static void addMUC() 
                MultiUserChat.addInvitationListener(connection, new InvitationListener() 
                    @Override
                    public void invitationReceived(Connection conn, final String room, String invitor,
                            String reason, String password, Message message) 

                        Constant.showGroupChatInvitationAlert(Constant.MESSAGE_GROUP_CHAT, reason, 
                                room,conn,invitor, _sPrefs.getString("USERNAME", ""), _sPrefs.getString("PASSWORD", ""));


                    
                );
            


    public static void showGroupChatInvitationAlert(final String title, final String message,
                final String roomname,final Connection conn,final String inviter, final String user,final String password) 

            new Thread(new Runnable() 
        public void run() 

joinMultiUserChat(Constant.userName, Constant.password, roomname.split("@")[0]);
        
    ).start();

        

public static MultiUserChat joinMultiUserChat(String user, String password, String roomsName)   
        try   

            XMPPSmackConnection.getInstance();
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy); 
            // Create a MultiUserChat window using XMPPConnection  
            MultiUserChat muc = new MultiUserChat(XMPPSmackConnection.connection, roomsName  
                    + "@conference." + XMPPSmackConnection.connection.getServiceName());  



            // The number of chat room services will decide to accept the historical record  
            DiscussionHistory history = new DiscussionHistory();  
            history.setMaxStanzas(0);  
            //history.setSince(new Date());  
            // Users to join in the chat room  
            muc.join(user, password, history, SmackConfiguration.getPacketReplyTimeout());  
            System.out.println("The conference room success....");  
            return muc;  
         catch (XMPPException e)   
            e.printStackTrace();  
            System.out.println("The conference room to fail....");  
            return null;  
          
    

【问题讨论】:

xmpp 支持群聊,但它不是持久性,您必须在本地存储所有邀请和数据,因为如果连接中断,它会清除所有组相关数据 对不起.. 没明白你想说什么.. 有没有办法自动接受邀请? ***.com/questions/22626930/… igniterealtime.org/builds/smack/docs/latest/documentation/… 【参考方案1】:

在连接到服务器之前将此扩展管理器添加到ProviderManager

ProviderManager.getInstance().addExtensionProvider("x", "http://jabber.org/protocol/muc#user",  new MUCUserProvider());

希望对你有帮助……

【讨论】:

以上是关于Android 使用 xmpp 接受群聊邀请的主要内容,如果未能解决你的问题,请参考以下文章

XMPP群聊java - 在邀请监听器内加入房间的用户的逻辑不起作用

XMPP房间邀请好友IOS

XMPP 房间邀请

XMPP 群聊 Android

XMPP 上的群聊推送通知

是否可以在 xmpp 聊天中使用像 Groupchat 这样的 facebook?