ユーザーアバターを取得しようとしていたときに、Androidでsmack 3.2.1を使用してインスタントメッセージを開発しています。Vcard には、XML で表示できるすべての情報が含まれているわけではないことがわかりました。
ここに私のコードスニペットがあります:
// From other post - add vCard with addIQProvider before connect to server
ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());
connection = new XMPPConnection(config);
connection.connect();
...
VCard card = new VCard();
try
{
card.load(connection, "test@abc.com");
Log.e(TAG, card.toString());
/* return: <vCard xmlns='vcard-temp'><FN></FN></vCard>*/
Log.e(TAG, card.getAvatarHash());
/* exception - java.lang.NullPointerException: println needs a message */
}
catch(Exception e)
{
Log.e(TAG, "in exception");
Log.e(TAG, e.toString());
}
Presence presence = roster.getPresence("test@abc.com");
Log.e(TAG, presence.toXML());
/* return: <presence to="peter@abc.com/Smack" from="test@abc.com/3e34cf2b"><show>xa</show>
<x xmlns="vcard-temp:x:update">
<photo>5455bf2f365065ffb59da7414ac9f83cbc850ef2</photo>
</x><c xmlns="http://jabber.org/protocol/caps"></c></presence> */
明らかに、presents.toXML() にはアバター情報が含まれています。
(1) 「ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());」を追加しました。しかし、なぜまだ vCard でアクセスできないのでしょうか? 多くの投稿を検索しましたが、まだ解決策が見つかりません。
(2) smack/asmack でユーザーアバターを取得する例はありますか?
ありがとう