2012-10-23 39 views
2

在我的聊天應用程序中,我想實現羣聊功能。同樣,我想創建房間併發送邀請給我的朋友加入房間。這裏是我的代碼加入並邀請朋友去房間。XMPP房間邀請

創建會議室

//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, "[email protected]"); 

       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("[email protected]", "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"); 

請讓我知道爲什麼我沒有收到邀請。

感謝

+0

你可以做記錄,以瞭解狀況;代碼塊在哪裏以及監聽器是否接收到來自服務器的回叫(即,來自會議室)並且客戶端線程準備好接收邀請。 –

+1

Static void main是Right。 U應該執行調試並找出問題所以我們可以幫助 –

+0

@SherazKhilji是邀請已發送,並且我在服務類中寫入了邀請偵聽器。邀請只是發送。但它根本沒有收到。我已經調試過它。 –

回答

0

你可以試試這個

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); 

    } 
} 

這可能會解決你的問題。

+0

現在該如何加入該組? –

+0

@AnjaliTripathi你可以這樣做 MultiUserChat muc = new MultiUserChat(conn,room); muc.join(「My Nickname」); –

+0

我做到了,你可以在我的代碼中看到.. –

0

我們錯過了主題這裏:

只需添加下面的代碼加入羣:

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(); 
    } 

希望這將有很大的幫助。

2

你寫這個代碼後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(); 
         } 
        } 


       }); 

其對我的工作..try它