1
我完全按照答案的建議(Asmack not loading VCard),但它仍然無法正常工作。 DEBUG輸出顯示Smack收到包含VCard信息的數據包,但在https://github.com/rtreffer/smack/blob/master/source/org/jivesoftware/smackx/packet/VCard.java#L548中拋出一個ClassCastException,我得到的全部內容是'沒有VCard for xxx @ xxx'。asmack - 無法讀取VCard
我的代碼:
public VCard getUserVCard() throws XMPPException {
VCard userVCard = new VCard();
userVCard.load(connection);
return userVCard;
}
而且以前的一些初始化:
ConnectionConfiguration config = new ConnectionConfiguration(OF_HOST, OF_PORT, OF_SERVICE_NAME);
config.setDebuggerEnabled(true);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
ProviderManager.getInstance().addIQProvider("vCard ", "vcard-temp", new org.jivesoftware.smackx.provider.VCardProvider());
connection = new XMPPConnection(config);
this.context = context;
try {
connection.connect();
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
數據庫中的虛擬卡信息OK - 只有最終鑄造失敗。有什麼建議麼?
一個評論 - 如果我直接使用VCardProvider,我可以從一個字符串創建一個VCard: 'String vCardString = prefs .getString(UserPreferences.USER_VCARD,null); userVCard = VCardProvider.createVCardFromXML(vCardString); ' – PawelPredki 2012-02-01 13:51:22
您是否嘗試過使用其他方法'userVCard.load(connection,user);',用戶是您要檢索vCard的用戶的id(即您的id在這種情況下)?我不知道它能否更好地發揮作用,但這是我成功使用的一種。 – Guillaume 2012-02-01 18:25:23
我也嘗試過,結果很相似。 VCard數據是從服務器獲取的,但不會被asmack解析爲VCard對象。 – PawelPredki 2012-02-05 17:24:21