私はアンドロイドデバイスにsmack.providersを追加するのに少し時間を費やしました。これは私のアプリケーションでうまくいきました。それがする場合だけ見るためにasmack - カスタムXMLメッセージを受信します。
<extensionProvider>
<elementName>players</elementName>
<namespace>boxer:players</namespace>
<className>company.games.boxer.PlayerListProvider</className>
</extensionProvider>
は私も今のところありPlayerListProviderクラスを、ご紹介しましょう:私は、デフォルトのiqProvidersとextensionProvidersを追加しましたが、私はまた、次のようである私のカスタムextensionProviderを、追加しました
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";
}
}
そして私は、次のメッセージが出ています:私はそれが呼び出される知っているよときに私はそれを完全に実装します、したがって、機能性の少なくとも一部が動作します - (それはない)と呼ばれますクライアントアンドロイドアプリを実行します:
<message to="[email protected]" type="chat" id="9" from="[email protected]">
<body>
<players xmlns="boxer:players" command="playerlist">
<player>test1</player>
<player>test2</player>
</players>
</body>
<thread>3P0i00</thread>
</message>
私の質問は今、なぜPlayerListProvider(EmbeddedExtensionProvider)がメッセージの受信時に呼び出されないのですか?メッセージにはtagが含まれていて、smack.providersで指定したようにboxer:playerという名前空間があります。
どのような考えですか?
あなたの問題を解決しましたか?あなたは – Hunt