【问题标题】:XMPP Room InvitationXMPP 房间邀请
【发布时间】:2012-10-23 10:26:12
【问题描述】:

在我的聊天应用程序中,我想实现群聊功能。同样,我想创建房间并将邀请发送给我的朋友加入房间。这是我加入并邀请朋友加入房间的代码。

创建房间

//Create Room
    btn_CreateRoom = (Button)findViewById(R.id.btn_usermenu_CreateRoom);
    btn_CreateRoom.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            try {
                muc = new MultiUserChat(connection, "room1@conference.abc.com");

                muc.join("Sunil","123456");
                muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));

            } catch (XMPPException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            System.out.println("Room Created");
        }
    });


    btn_Invite = (Button)findViewById(R.id.btn_usermenu_InviteToRoom);
    btn_Invite.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            muc.invite("sunil@abc.com", "Please join this room");



        }
    });

}

为了接收邀请,我在我的服务类中实现了一个邀请监听器。但我无法通过通知收到邀请。是代码的问题。

这是我的邀请监听器。

MultiUserChat.addInvitationListener(connection, new InvitationListener() {

            @Override
            public void invitationReceived(Connection arg0, String arg1, String arg2,
                    String arg3, String arg4, Message arg5) {
                // TODO Auto-generated method stub

                System.out.println("Received??");
                notification("Invitation Received");

请告诉我为什么我没有收到邀请。??

谢谢

【问题讨论】:

  • 你可以做日志来了解状态;您的代码在哪里阻塞以及侦听器是否收到来自服务器的回调(即从房间到加入)并且客户端线程已准备好接收邀请。
  • 静态 void main 是正确的。你应该执行调试并查明问题,以便我们提供帮助
  • @SherazKhilji 是的,邀请已发送,我已在服务类中编写了我的邀请监听器。邀请只是发送。但它根本没有收到。我已经调试过了。

标签: android xmpp chatroom multi-user


【解决方案1】:

你在xmppconnection.connect()之后写了这段代码

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


                });

它对我有用..试试吧

【讨论】:

    【解决方案2】:

    你可以试试这个

    public class myclass extends Activity implements InvitationListener{
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
                    MultiUserChat.addInvitationListener(Connection,myclass.this);
    }
    @Override
        public void invitationReceived(Connection conn, final String room,
                String inviter, String reason, String password, Message message) {
    
            Log.e("inviter", inviter);
            Log.e("message", message.getBody());
            Log.e("reason", reason);
            Log.e("room", room);
    
        }
    }
    

    这可能会解决您的问题。

    【讨论】:

    【解决方案3】:

    我们在这里错过了主题

    只需添加以下代码即可加入群组:

    private void setChatRoomInvitationListener() {
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    MultiUserChat.addInvitationListener(xmppConnection, new InvitationListener() {
                        @Override
                        public void invitationReceived(Connection connection,String room, String inviter, String reason,String unKnown, Message message) {
                            XMPPConnectionUtils.configureChatStandards();
                            MultiUserChat muc = new MultiUserChat(connection, room);
                            try {
                                muc.join("My_Name_Here");
                            } catch (XMPPException e) {
                                e.printStackTrace();
                            }
                        }
                    });
                }
            });
            thread.start();
        }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 2012-04-21
      • 2015-05-16
      • 2017-01-22
      • 2023-01-12
      • 2011-10-10
      • 2021-01-31
      相关资源
      最近更新 更多