2015-10-17 5 views
0

Мы используем asmack (в настоящее время в версии 4.0.3). Я придерживаюсь этой версии до февраля. Первый вопрос о SO и новый, чтобы нанести удар, поэтому, пожалуйста, несите меня. Я получаю этот пакет с smack на Android (отображается в журнале отладки).Не получает пакет в моем приемнике пакетов

RCV (1):

< presence xmlns="jabber:client" 
from="[email protected]/d67d0529-cdb3-4842-872b-8968ad635194" to="[email protected]/d67d0529-cdb3-4842-872b-8968ad635194"> 
< x xmlns="http://jabber.org/protocol/muc#user"> 
< item affiliation="member" 
role="participant" 
name="my name" 
type="web" 
mute="false"> 
< /item> 
< status xmlns="http://jabber.org/protocol/muc" code="301"></status> 
< status xmlns="http://jabber.org/protocol/muc" code="110">< /status> 
< /x> 
< /presence> 

Мой пакет Фильтр

PacketFilter presenceFilter = new AndFilter(new FromMatchesFilter(roomId + "@chat." + myUrl, true), new PacketTypeFilter(Presence.class)); 

    connectionXmpp.addPacketListener(myPacketListener, presenceFilter); 

Мой пакет Слушатель

private class myPacketListener implements PacketListener{ 
     @Override 
     public void processPacket(Packet packet) throws NotConnectedException { 
     Log.i(TAG," Packet to xml : "+packet.toXML()); 
    } 
} 

Как обработать этот XML со всем его содержанием? Я получаю два кода состояния, мне нужно их разобрать. Как обрабатывать все данные в теге «x». Мой прослушиватель пакетов возвращает кучу вывода, но ничего не содержит код статуса 301 или свойство mute.

Спасибо всем

ответ

0

Попробуйте добавить ниже код в processPacket метод, чтобы получить packet детали.

@Override 
    public void processPacket(Packet packet) throws NotConnectedException 
{ 
    Log.i(TAG," Packet to xml : "+packet.toXML()); 
    //new code start 
     Message message = (Message) packet; 

      if (message.getType() == Message.Type.error) { 
       return; 
      } 
      if (message.getBody() != null) { 
Log.i("Message==>",message.getBody()); 
Log.i("Message From",message.getFrom()) 
      } 
    //new code end 
}