私は答えが示唆したことを正確に行いました(Asmack not loading VCard)が、それでも機能しません。DEBUG 出力は、Smack が VCard 情報を含むパケットを受信したものの、 https://github.com/rtreffer/smack/blob/master/source/org/jivesoftware/smackx/packet/VCard.java#L548で ClassCastException をスローしたことを示しています。そして、「xxx@xxx の 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();
}
データベース内の VCard 情報は問題ありません。最終的なキャストのみが失敗します。助言がありますか?