Ich benutze asmack die neueste Version (asmack-android-8-source-0.8.3) in einem Android-Projekt und Ich habe den folgenden Code :(a) Smacks IQ.toXml() gibt XML ohne benutzerdefinierte Kindelemente zurück
connection.addPacketListener(new PacketListener()
{
@Override
public void processPacket(Packet p)
{
if(p.getPacketID().equals("v3"))
{
Log.e("TAG", p.toXML());
}
}
}, new IQTypeFilter(IQ.Type.RESULT));
Packet iq = new Packet()
{
@Override
public String toXML()
{
String str = "<iq type='get' id='v3'><getservertime xmlns='urn:xmpp:mrpresence'/></iq>";
Log.e("TAG", str);
return str;
}
};
//sends <iq type='get' id='v3'><getservertime xmlns='urn:xmpp:mrpresence'/></iq>
connection.sendPacket(iq);
im Debugger die Antwort, es ist ok, und dies erwartet wird:
<iq type="result" id="v3" to="[email protected]/Smack">
<servertime xmlns="urn:xmpp:mrpresence" utc="2013-06-28T11:45:32.380Z" local="2013-06-28T07:45:32.380Z"/>
</iq>
aber p.toXML() im Paket listner, das Stichwort "Servertime" es fehlt:
<iq id="v3" to="[email protected]/Smack" type="result"></iq>
Irgendwelche Vorschläge, was ich falsch mache?
Ich habe einen PacketExtensionProvider mit ProviderManager.getInstance() hinzugefügt. AddExtensionProvider (packetExtensionProvider) wie in diesem Tutorial: http://oneminutedistraction.wordpress.com/2010/08/31/receiving-pep-broadcast-2/ aber mein PacketExtensionProvider wird nie aufgerufen. Benütze ich immer noch connection.addPacketListener()? Danke. –
Ich habe mir auch diesen Quellcode angeschaut: github.com/rumblem/jfexmpp und diesen einen GitHub.com/redsolution/xabber-android aber kein Erfolg :( –
@Flow können Sie bitte erarbeiten, wie Sie eine neue PacketExtension erstellen und registrieren Sie sie mit ProviderManager. – Sushant