如何使用asmack库发送和收听定制的xmpp状态数据包

如何使用asmack库发送和收听定制的xmpp状态数据包,xmpp,asmack,Xmpp,Asmack,我正在努力倾听联系人对VCard的更新。我试图通过发送一个自定义状态来实现这一点,该状态在更新VCard时携带一些自定义信息。从调试的输出中,我发现,无论何时发送此类自定义状态,其联系人都会收到状态节。不幸的是,当联系人的packetListener无法检测到传入的数据包时,然后所有添加到连接的侦听器似乎都被删除了, 也就是说,以前可以检测到的另一个数据包,尽管调试仍然可以正常工作,但无法监听。 我的一些代码片段如下所示: // to update VCard mVCard.load(mXMP

我正在努力倾听联系人对VCard的更新。我试图通过发送一个自定义状态来实现这一点,该状态在更新VCard时携带一些自定义信息。从调试的输出中,我发现,无论何时发送此类自定义状态,其联系人都会收到状态节。不幸的是,当联系人的packetListener无法检测到传入的数据包时,然后所有添加到连接的侦听器似乎都被删除了, 也就是说,以前可以检测到的另一个数据包,尽管调试仍然可以正常工作,但无法监听。 我的一些代码片段如下所示:

// to update VCard
 mVCard.load(mXMPPConnection);
        mVCard.setField(XmppUserInfo.tagHeadIcon, userInfo.getHeadIconUrl());
        mVCard.setField(XmppUserInfo.tagGender, userInfo.getGender());
        mVCard.setField(XmppUserInfo.tagNickname,userInfo.getNickname());
        mVCard.setField(XmppUserInfo.tagAccount, userInfo.getAccount());
        mVCard.setField(XmppUserInfo.tagSignnature, userInfo.getSignnature());
        mVCard.save(mXMPPConnection);


 // to send custom presence to subscribers to renew infomation
            Presence presence = new Presence(Type.available);
            presence.addExtension(new UserInfoExtension(userInfo));
            mXMPPConnection.sendPacket(presence);
我的听众是这样的:

//add Listener  

PacketListener packetListener = new PacketListener() {

            @Override
            public void processPacket(Packet packet) {
                if(null != packet){
                    Log.i(TAG,"UserInfo is being updated" );
                    Log.i(TAG, "the packet is " +packet.toXML());

                    }
                }
            }
        };
        xmppConnection.addPacketListener(packetListener, new PacketFilter() {

            @Override
            public boolean accept(Packet p) {
                return true;
            }
        });
但是我不能说日志中的pressen节,尽管我可以从debug的输出接收到存在。有人能帮我吗?非常感谢

收到的信息如下:

<presence id="AL4As-4" from="20298509@openfire/ad9a8862" to="20298468@openfire">
<user xmlns="kascend:video:xmpp:userinfo">
<info account="133787245" gender="f" signnature="wwwwwww" nickname="bbbb"/>
</user>
<c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.igniterealtime.org/projects/smack/" ver="O1jiM4C3yPnCFLp9hBZUn4AgVXs="/></presence>


很抱歉误导了你。最后证明问题是由扩展提供程序中的错误引起的,这会使程序陷入无休止的循环。我修正了那个错误,现在一切正常