当我试图获取用户头像时,我正在使用 smack 3.2.1 在 Android 中开发即时消息器。我发现 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> */
显然,presence.toXML() 有头像信息。
(1) 我添加了 'ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());' 但是为什么我仍然无法通过 vCard 访问它?我搜索了很多帖子,仍然找不到解决方案。
(2) 是否有任何使用 smack/asmack 获取用户头像的示例?
谢谢