0

我对用于 android xmpp 连接的 asmack java 库有疑问。

我的问题是我无法使用此代码获取我的联系人 vCard 或我自己的电子名片:

VCard vCard = new VCard();          

try {
//SmackConfiguration.setPacketReplyTimeout(300000);
vCard.load(conexion.getConnection(),u.get_jid());
} catch (XMPPException e) {
e.printStackTrace();
} catch (NullPointerException e) {
// TODO: handle exception
}

对于所有请求,都会出现错误:“No vCard for xxx @ xxxx”;

并且已经使用:

configure(ProviderManager.getInstance());

并调用所有负责制作提供者的类:

private void configure(ProviderManager pm) {

    Log.d("XMPPChatDemoActivity", "Entro al configure");    
    //  Private Data Storage
pm.addIQProvider("query","jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider());

//  Time
try {
pm.addIQProvider("query","jabber:iq:time", Class.forName("org.jivesoftware.smackx.packet.Time"));
} catch (ClassNotFoundException e) {
Log.w("Error", "Can't load class for org.jivesoftware.smackx.packet.Time");
}

//  XHTML
pm.addExtensionProvider("html","http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider());

//  Roster Exchange
pm.addExtensionProvider("x","jabber:x:roster", new RosterExchangeProvider());
//  Message Events
pm.addExtensionProvider("x","jabber:x:event", new MessageEventProvider());
//  Chat State
pm.addExtensionProvider("active","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
pm.addExtensionProvider("composing","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
pm.addExtensionProvider("paused","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
pm.addExtensionProvider("inactive","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
pm.addExtensionProvider("gone","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());

//   FileTransfer
pm.addIQProvider("si","http://jabber.org/protocol/si", new StreamInitiationProvider());
pm.addIQProvider("query","http://jabber.org/protocol/bytestreams", new BytestreamsProvider());
pm.addIQProvider("open","http://jabber.org/protocol/ibb", new OpenIQProvider());
pm.addIQProvider("close","http://jabber.org/protocol/ibb", new CloseIQProvider());
pm.addExtensionProvider("data","http://jabber.org/protocol/ibb", new DataPacketProvider());

//  Group Chat Invitations
pm.addExtensionProvider("x","jabber:x:conference", new GroupChatInvitation.Provider());
//  Service Discovery # Items
pm.addIQProvider("query","http://jabber.org/protocol/disco#items", new DiscoverItemsProvider());
//  Service Discovery # Info
pm.addIQProvider("query","http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
//  Data Forms
pm.addExtensionProvider("x","jabber:x:data", new DataFormProvider());
//  MUC User
pm.addExtensionProvider("x","http://jabber.org/protocol/muc#user", new MUCUserProvider());
//  MUC Admin
pm.addIQProvider("query","http://jabber.org/protocol/muc#admin", new MUCAdminProvider());
//  MUC Owner
pm.addIQProvider("query","http://jabber.org/protocol/muc#owner", new MUCOwnerProvider());
//  Delayed Delivery
pm.addExtensionProvider("x","jabber:x:delay", new DelayInformationProvider());
//  Version
try {
pm.addIQProvider("query","jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version"));
} catch (ClassNotFoundException e) {
Log.w("Error", "Can't load class for org.jivesoftware.smackx.packet.Version");
}
//  VCard
pm.addIQProvider("vCard","vcard-temp", new VCardProvider());
//  Offline Message Requests
pm.addIQProvider("offline","http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider());
//  Offline Message Indicator
pm.addExtensionProvider("offline","http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider());
//  Last Activity
pm.addIQProvider("query","jabber:iq:last", new LastActivity.Provider());
//  User Search
pm.addIQProvider("query","jabber:iq:search", new UserSearch.Provider());
//  SharedGroupsInfo
pm.addIQProvider("sharedgroup","http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider());
//  JEP-33: Extended Stanza Addressing
pm.addExtensionProvider("addresses","http://jabber.org/protocol/address", new MultipleAddressesProvider());
}

即使在这一切之后,我仍然无法获得任何用户的电子名片。

4

0 回答 0