1

我完全按照答案的建议做了(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 信息是 OK 的 - 只有最终的铸造失败。有什么建议么?

4

1 回答 1

0

我最终决定不仅要添加 VCardProvider,还要在配置中添加整个 9 码,当在带有 aSmack 的 XMPP 中使用 UserSearch 时,getSearchForm 返回 null并且它起作用了。

于 2012-02-16T11:21:25.343 回答