Asmack - Ricezione di messaggi XML personalizzati ||
Domanda
Ho trascorso un po 'di tempo per aggiungere smack.Provider nel dispositivo Android, che viene raccolto dalla mia applicazione. Ho aggiunto IQProvider e ExtensionProviders
<extensionProvider>
<elementName>players</elementName>
<namespace>boxer:players</namespace>
<className>company.games.boxer.PlayerListProvider</className>
</extensionProvider>
Lasciami presentare anche la classe PlayerListProvider, che è attualmente lì solo per vedere se verrà chiamato (cosa che non lo fa) - Lo implementerò completamente quando saprò che verrà chiamata, quindi almeno quella parte della funzionalità lavori:
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";
}
}
E ricevo il seguente messaggio quando eseguo l'app Android client:
<message to="eee@localhost" type="chat" id="9" from="admin@localhost">
<body>
<players xmlns="boxer:players" command="playerlist">
<player>test1</player>
<player>test2</player>
</players>
</body>
<thread>3P0i00</thread>
</message>
La mia domanda ora è: perché non è il PlayerListProvider (EmbedDextensionProvider) chiamato dopo aver ricevuto il messaggio. Il messaggio contiene il tag e ha lo spazio dei nomi di Boxer: Player, come ho specificato in Smack.Providers.
qualche idea?
Nessuna soluzione corretta