不会调用XEP-0022的SMACK消息侦听器

时间:2011-09-21 08:48:28

标签: android xmpp smack

我无法接收XMPP消息,我使用以下代码:

    Message mess = new Message() {
           @Override
           public String toXML() {
           return "<message to='user@50.17.86.32' 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获取消息状态。

1 个答案:

答案 0 :(得分:1)

我认为您的过滤器是导致问题的原因。如果您的传入消息没有定义type ='chat'属性,那么它们将是Message.Type.normal类型。我当然只是在猜测,因为你没有发布传入的消息,但你发送的消息不包括类型。

您可能只想创建一个ChatManagerListener并将其注册到ChatManager。然后这将处理这种情况。

注意:您知道XEP-0022已经过时吗?