Прослушиватель сообщений SMACK для XEP-0022 не вызывается

Я не могу получать сообщения XMPP, я использую следующий код:

    Message mess = new Message() {
           @Override
           public String toXML() {
           return "<message to='[email protected]' id='message22'><body>Great    Mesg</body><x xmlns='jabber:x:event'><offline/><delivered/><composing/></x></message>";
          }
    };


    PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
    connection.sendPacket(mess);
    connection.addPacketListener(new PacketListener() {
            public void processPacket(Packet packet) {
              Message message = (Message) packet;
              Log.d("Recv", "Message: " + message.toXML());
          }
    }, filter);

В основном я использую исправленную версию SMACK для Android... и пытаюсь получить состояния сообщений с помощью xep 0022.


person Programmer    schedule 21.09.2011    source источник
comment
Что именно идет не так? Дайте более подробное описание проблемы. Кроме того, вы приняли ответы только на 17% заданных вами вопросов. Если вы не получили хороших ответов, это нормально, но вы можете просмотреть вопросы, которые вы задавали в прошлом, и нажать галочку рядом с лучшим ответом, если есть хорошие ответы. Это побуждает людей отвечать на ваши будущие вопросы.   -  person Jon Bright    schedule 21.09.2011
comment
На вопрос не ответили правильно ... так что это была проблема ... в этом вопросе я не получаю сообщение на консоли, в режиме отладки я вижу, что сообщение приходит, но smack не отображается в сообщении. подскажите пожалуйста...   -  person Programmer    schedule 21.09.2011


Ответы (1)


Я думаю, что ваш фильтр является причиной вашей проблемы. Если для ваших входящих сообщений не определен атрибут type='chat', они будут иметь тип Message.Type.normal. Конечно, я только предполагаю, поскольку вы не публиковали входящее сообщение, но то, которое вы отправляете, не включает тип.

Вы можете просто создать ChatManagerListener и вместо этого зарегистрировать его в ChatManager. Это будет обрабатывать этот случай.

Примечание. Вы знаете, что XEP-0022 устарел, верно?

person Robin    schedule 21.09.2011
comment
Ага... ты прав.... спасибо, Робин. Но я не знал, что 0022 был устаревшим, поэтому какой из последних XEP похож на эту функциональность. - person Programmer; 21.09.2011
comment
XEP-0085 и XEP-0184 - person Robin; 21.09.2011