Pregunta

He pasado algún tiempo para agregar smack.providers en el dispositivo Android, que mi aplicación recoge bien. He agregado el IQProviders y Extensions de extensión predeterminado, pero también he agregado mi ExtensionProvider personalizado, que es lo siguiente:

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

Permítanme presentar también a la clase PlayerListProvider, que actualmente está allí para ver si se llamará (lo que no lo hace): lo implementaré completamente cuando sepa que se llama, por lo tanto, al menos esa parte de la funcionalidad obras:

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";
  }

}

Y recibo el siguiente mensaje cuando ejecuto la aplicación Android del cliente:

<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>

Mi pregunta ahora es, ¿por qué no se pidió el PlayerListProvider (InbedDedExtensionProvider) al recibir el mensaje? El mensaje contiene la etiqueta y tiene el espacio de nombres de Boxer: Player, como especifiqué en Smack.Providers.

¿Alguna idea?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top