2016-05-11 1 views
1

しかし同時に、私は以前のすべてのメッセージを受け取ります。このことから私を助けてください。ここ は私のコードです:メッセージをグループに送信したあとに、グループにチャットした後に複数のメッセージを受信しました。

send.setOnClickListener(new View.OnClickListener() {    
    public void onClick(View view) { 
     to = groupname + "@conference.localhost".toString(); 
     String text = (textMessage.getText().toString()); 
     textMessage.setText(""); 

     muc = new MultiUserChat(connection, to); 

     try { 
      muc.join(USERNAME); 
     } catch (XMPPException e) { 
      e.printStackTrace(); 
     } 

     Message msg = new Message(to, Message.Type.groupchat); 
     msg.setBody(text); 
     if (connection != null) { 
      connection.sendPacket(msg); 
      Msg data = new Msg(); 
      data.setMessage(text); 
      data.setName(userFrom); 
      data.setDate(DateAndTime.getCurrentDate()); 
      data.setTime(DateAndTime.getCurrentTime()); 
      data.setSender(true); 
      MessageListAdapter.messagesItems.add(data); 
      notifyMyAdapter(); 
     } 
    } 
}); 

、ここでは私の受信コードです:MultiUserChat

public void setConnection(XMPPConnection connection) { 

    this.connection = connection; 
    if(connection != null) { 

     PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat); 
     connection.addPacketListener(new PacketListener() { 
      @Override 
      public void processPacket(Packet packet) { 

       Message message = (Message) packet; 
       if (message.getBody() != null) { 
        String fromName = StringUtils.parseBareAddress(message.getFrom()); 
       Log.i("XMPPChatDemoActivity ", " Text Recieved " + message.getBody() + " from " + fromName); 
        Msg data = new Msg(); 
        String subject = message.getSubject(); 

        if (subject == null) { 
         data.setMessage(message.getBody()); 
         data.setName(NAME); 
         data.setDate(DateAndTime.getCurrentDate()); 
         data.setTime(DateAndTime.getCurrentTime()); 
         data.setSender(false); 
         MessageListAdapter.messagesItems.add(data); 

        mHandler.post(new Runnable() { 
         @Override 
         public void run() { 
          notifyMyAdapter(); 
         } 
        }); 
       } else if (subject.equals("")){ 
        data.setMessage(message.getBody()); 
        data.setName(NAME); 
        data.setDate(DateAndTime.getCurrentDate()); 
        data.setTime(DateAndTime.getCurrentTime()); 
        data.setSender(false); 
        MessageListAdapter.messagesItems.add(data); 
        // Add the incoming message to the list view 
        mHandler.post(new Runnable() { 
         public void run() { 
          notifyMyAdapter(); 
         } 
        }); 
       } 
      } 
     } 

     },filter); 
    } 

} 

答えて

0

あなたが設定さDiscussionHistoryオブジェクトを提供する必要があります部屋に参加しながら、受け取るために歴史の量を制御するには。詳細はおよそMultiUserChat部屋に入るときDiscussionHistoryクラスが受信する文字 やメッセージの数を制御しrefer this

muc.join(String nickname, String password, DiscussionHistory history, long timeout) 

。客室に入室中に DiscussionHistoryを指定しなかった場合、客室で返される履歴の量は となります。詳細refer this

例えば:ラケッシュ@

MultiUserChat muc = new MultiUserChat(connection, to); 
DiscussionHistory history = new DiscussionHistory(); history.setMaxStanzas(0); 
muc.join("username", "password", history, SmackConfiguration.getPacketReplyTimeout()); 
+0

...それが正常に動作します。返信のためのThanx。 :) –

関連する問題