Android Smack XMPP 节侦听器:缺少节属性

Posted

技术标签:

【中文标题】Android Smack XMPP 节侦听器:缺少节属性【英文标题】:Android Smack XMPP stanza listener : Missing stanza attribute 【发布时间】:2018-03-20 13:37:41 【问题描述】:

这是从 api 创建的节:

<message xmlns="jabber:client" to="+60123333xxx@xxxx.xxxx.my/84947029xxx52245593xxx" from="7xxxa-3cd4-44c6-b5xxxxe5d3@xxxx.xxxx.xxxx.my">
    <x xmlns="jabber:x:conference" reason="new group chat : mucduke" jid="7xxxa-3cd4-44c6-b5xxxxe5d3@xxxx.xxxx.xxxx.my"></x>
    <body>new group chat : mucduke</body>
</message>

我在 android 中使用 connection.addAsyncStanzaListener(stanzaListener, stanzaFilter) 来获取节,但如果节中缺少“原因”和正文元素,则将其归属。谁能帮助我为什么会发生这种情况?

【问题讨论】:

【参考方案1】:

使用以下StanzaTypeFilter 添加addSyncStanzaListener

 StanzaTypeFilter filter = new StanzaTypeFilter(Message.class);

    mStanzaListener = new StanzaListener() 
        @Override
        public void processPacket(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException 
                onMessageReceived(stanza);
        
    ;
    connection.addSyncStanzaListener(mStanzaListener, filter);

获取stanzaonMessageReceived

public void onMessageReceived(Stanza stanza) 

  if(stanza instanceof Message)
      Message msg= (Message) stanza;
      msg.getBody();
      ...
      ...
      
  

【讨论】:

以上是关于Android Smack XMPP 节侦听器:缺少节属性的主要内容,如果未能解决你的问题,请参考以下文章