Question

J'ai passé du temps pour ajouter des smack.Providers dans l'appareil Android, qui est très bien ramassé par mon application. J'ai ajouté les IQProviders et ExtensionProviders par défaut, mais j'ai également ajouté mon extension personnalisée, ce qui suit:

<extensionProvider>
  <elementName>players</elementName>
  <namespace>boxer:players</namespace>
  <className>company.games.boxer.PlayerListProvider</className>
</extensionProvider>

Permettez-moi également de présenter la classe PlayerListProvider, qui est actuellement là juste pour voir si elle sera appelée (ce qui ne le fait pas) - je vais l'implémenter pleinement quand je saurai qu'elle s'appelle, donc au moins cette partie de la fonctionnalité œuvres:

import java.util.List;
import java.util.Map;

import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smackx.provider.EmbeddedExtensionProvider;

import android.util.Log;

@SuppressWarnings("deprecation")
class PlayerListProvider extends EmbeddedExtensionProvider {
  protected PacketExtension createReturnExtension(String currentElement, String currentNamespace, Map<String,String> attributeMap, List<? extends PacketExtension> content) {
    Log.w("***** AAAAAAAAAAAAAAAAAAAA *******", "0");
    return new XMLPlayerList();
  }

}



class XMLPlayerList implements PacketExtension {

  public String getElementName() {
    return "aaaaa";
  }

  public String getNamespace() {
    return "aaaaa";
  }

  public String toXML() {
    return "aaaaa";
  }

}

Et j'obtiens le message suivant lorsque j'exécute l'application Android client:

<message to="eee@localhost" type="chat" id="9" from="admin@localhost">
  <body>
    &lt;players xmlns="boxer:players" command="playerlist"&gt;
      &lt;player&gt;test1&lt;/player&gt;
      &lt;player&gt;test2&lt;/player&gt;
    &lt;/players&gt;
  </body>
  <thread>3P0i00</thread>
</message>

Ma question est maintenant, pourquoi le PlayerListProvider (EntembedDedextendProvider) n'a-t-il pas été invoqué lors de la réception du message. Le message contient la balise et a l'espace de noms de Boxer: Player, comme je l'ai spécifié dans Smack.Providers.

Des pensées?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top