1

当我试图获取用户头像时,我正在使用 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 获取用户头像的示例?

谢谢

4

0 回答 0