无法在Asmack中设置VCard

时间:2014-06-29 18:13:05

标签: android xmpp asmack

我试图用我的Beem-asmack将Simple NickName设置为openfire服务器,如下所示:

 connection.login(USERNAME, PASSWORD);
            ProviderManager.getInstance().addIQProvider("vCard",   
 "vcard-temp", new org.jivesoftware.smackx.provider.VCardProvider());
            VCard card = new VCard();

            card.setNickName("NewNickname");
            try {
                card.save(connection);
            } catch (XMPPException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

IQ包是这样的:

06-29 14:06:28.560: D/SMACK(2691): 02:06:28 PM SENT (-1274092112): <iq id="RJyL4-4"   
from="reza@reza-hp/Smack" type="set"><vCard xmlns='vcard-temp'> 
<NICKNAME>NewNickname</NICKNAME>
06-29 14:06:28.560: D/SMACK(2691): </vCard>
06-29 14:06:28.560: D/SMACK(2691): </iq>

并且回复是:

 06-29 14:06:28.570: D/SMACK(2691): 02:06:28 PM RCV  (-1274092112): <iq type="result"  
 id="RJyL4-4" to="reza@reza-hp/Smack"/>

但是我的V卡没有得到更新。我之前没见过Vcard IQ,但这里的回复看起来很空白,我还有什么别的吗?有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您没有加载该卡。 试试这个:

VCard vCard = new VCard();
card.load(connection);
card.setNickName("NewNickname");
try {
    card.save(connection);
} catch (XMPPException e) {
  // TODO Auto-generated catch block
 e.printStackTrace();
}