SMACK XEP-313 Umsetzung

Es ist notwendig, ein 0313 XEP (0.2) http://xmpp.org/extensions/attic/xep-0313-0.2.html#sect-idp616432 in SMACK / ASMACK zu befestigen. Ich mache hier PacketExtension.

public class Archive313 implements PacketExtension { static final public String NAMESPACE = "urn:xmpp:mam:tmp"; static final public String ELEMENT = "result"; private String Id; private String Queryid; private String Stamp; private String To; private String From; private String Type; private String Body; public Archive313(String id, String queryid, String stamp, String to, String from, String type, String body) { Id = id; Queryid = queryid; Stamp = stamp; To = to; From = from; Type = type; Body = body; } @Override public String getElementName() { return ELEMENT; } @Override public String getNamespace() { return NAMESPACE; } @Override public String toXML() { return "<" + ELEMENT + " xmlns='" + NAMESPACE + "' queryid='" + Queryid + "' id='" + Id + "'>" + "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='" + Stamp + "'/><message to='" + To + "' from='" + From + "' type='" + Type + "'><body>" + Body + "</body></message></forwarded></result>"; } public static class Archive313Provider implements PacketExtensionProvider { @Override public PacketExtension parseExtension(XmlPullParser xmlPullParser) throws Exception { String tag_name = ""; String id = ""; String queryid = ""; String stamp = ""; String to = ""; String from = ""; String type = ""; String body = ""; while (xmlPullParser.getEventType() != XmlPullParser.END_DOCUMENT) { switch (xmlPullParser.getEventType()) { case XmlPullParser.START_TAG: tag_name = xmlPullParser.getName(); for (int i = 0; i < xmlPullParser.getAttributeCount(); i++) { if (tag_name != null && tag_name.equals("result")) { if (xmlPullParser.getAttributeName(i).equals("queryid")) { queryid = xmlPullParser.getAttributeValue(i); } if (xmlPullParser.getAttributeName(i).equals("id")) { id = xmlPullParser.getAttributeValue(i); } } if (tag_name != null && tag_name.equals("delay")) { if (xmlPullParser.getAttributeName(i).equals("stamp")) { stamp = xmlPullParser.getAttributeValue(i); } } if (tag_name != null && tag_name.equals("message") && xmlPullParser.getAttributeCount() > 2) { if (xmlPullParser.getAttributeName(i).equals("to")) { to = xmlPullParser.getAttributeValue(i); } if (xmlPullParser.getAttributeName(i).equals("from")) { from = xmlPullParser.getAttributeValue(i); } if (xmlPullParser.getAttributeName(i).equals("type")) { type = xmlPullParser.getAttributeValue(i); } } } break; case XmlPullParser.END_TAG: tag_name = xmlPullParser.getName(); break; case XmlPullParser.TEXT: if ("body".equals(tag_name)) { body = xmlPullParser.getText(); } break; default: break; } xmlPullParser.next(); } return new Archive313(id,queryid,stamp,to,from,type,body); } } } ProviderManager pm = ProviderManager.getInstance(); pm.addExtensionProvider("result", "urn:xmpp:mam:tmp", new Archive313.Archive313Provider()); mXMPPConnection.addPacketListener(archiveListener, new PacketExtensionFilter("result", "urn:xmpp:mam:tmp")); private PacketListener archiveListener = new PacketListener() { @Override public void processPacket(Packet packet) { Log.d("archiveListener", packet.toXML()); } }; 

In dieser Implementierung gebe ich kein Paket an archiveListener.

  • Square ImageView
  • Ändern Sie die Hintergrundfarbe des ausgewählten Elements auf einem ListView
  • Kopiere Text aus TextView auf Android
  • Verwenden der Farben für das neue Material Design Thema in Android
  • Force Android-Widget zu aktualisieren
  • Circle Pager Indikator schaut nicht um
  • Wenn ich Filter setze:

     PacketFilter filter = new PacketFilter() { @Override public boolean accept(Packet packet) { if (packet.toXML().contains("urn:xmpp:mam:tmp")) { return true; } return false; } }; 

    Ich habe Pakete, aber sie sind nicht voll.

    Muss sein:

     <message id='aeb213' to='juliet@capulet.lit/chamber'> <result xmlns='urn:xmpp:mam:tmp' queryid='f27' id='28482-98726-73623'> <forwarded xmlns='urn:xmpp:forward:0'> <delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/> <message to='juliet@capulet.lit/balcony' from='romeo@montague.lit/orchard' type='chat'> <body>Call me but love, and I'll be new baptized; Henceforth I never will be Romeo.</body> </message> </forwarded> </result> </message> 

    Ich habe:

     <message id='aeb213' to='juliet@capulet.lit/chamber'> <result xmlns='urn:xmpp:mam:tmp' queryid='f27' id='28482-98726-73623'> </result> </message> 

    In SMACK Logs bekam ich volle Nachricht.

  • Holen Sie sich das Verzeichnis aus einem Dateipfad in Java (Android)
  • Ändern der Farbtonfarbe von Android EditText programmgesteuert
  • Was ist die Verwendung von SQLiteDatabase.CursorFactory in Android?
  • GetChildFragmentManager () auf programmgesteuert (dynamisch) hinzugefügt Fragmente?
  • Verwenden von surfaceView, um ein Video zu erfassen
  • Android Best Practices für Paketstruktur Problem
  • 2 Solutions collect form web for “SMACK XEP-313 Umsetzung”

    Es sieht aus wie dein Code

     ProviderManager pm = ProviderManager.getInstance(); pm.addExtensionProvider("result", "urn:xmpp:mam:tmp", new Archive313.Archive313Provider()); 

    Ruft niemals an. Überprüfen Sie dies. Häufig muss dieser Code in den statischen Block der Hauptklasse platziert werden, der mit xmpp lib arbeitet.

    Um eine Erweiterung hinzuzufügen, musst du drei Dinge machen.

    1. Erstellen Sie eine benutzerdefinierte Erweiterungsklasse, die Extension / ExtensionElement erweitert.

    2. Erstellen Sie einen Erweiterungsanbieter, der ExtensionProvider erweitert.

    3. Fügen Sie dem Anbieter-Manager einen benutzerdefinierten Erweiterungsanbieter hinzu

    Hinweis: Der Erweiterungsanbieter analysiert Ihre Erweiterung aus dem Paket (XML) nach Ihrer Anforderung (onParse () Methode des Anbieters). Jede benutzerdefinierte Erweiterung muss manuell analysiert werden und muss dem Provider-Manager einen benutzerdefinierten Provider hinzufügen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.