首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android 基于XMPP Smack Openfire 搜寻服务器的联系人

2013-12-26 
Android 基于XMPP Smack Openfire 搜索服务器的联系人Android Smack UserSearchManager (java.lang.ClassC

Android 基于XMPP Smack Openfire 搜索服务器的联系人
Android Smack UserSearchManager (java.lang.ClassCastException java.lang.NullPointerException)

用smack 开发IM 聊天工具时, 会用到UserSearchManager 来搜索服务器的联系人  判断用户是否存在等等,代码如下:


此时红色部分会报 java.lang.NullPointerException, 一种解决办法是在红色代码前加:
public void configure(ProviderManager pm)    {        // 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("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Time");        }        // 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());        // XHTML        pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider());        // 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)        {            // Not sure what's happening here.        }        // 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());        // FileTransfer        pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider());        pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider());        // Privacy        pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());        pm.addIQProvider("command", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider());        pm.addExtensionProvider("malformed-action", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.MalformedActionError());        pm.addExtensionProvider("bad-locale", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadLocaleError());        pm.addExtensionProvider("bad-payload", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadPayloadError());        pm.addExtensionProvider("bad-sessionid", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadSessionIDError());        pm.addExtensionProvider("session-expired", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.SessionExpiredError());    }

热点排行