zoukankan      html  css  js  c++  java
  • asmack在查询用户时,searchForm出现nullpointer的解决办法。

    asmack查询用户,searchForm出现nullpointer的解决办法。

    原因:
    the smack.providers file, usually in /META-INF folder in normal versions of smack, can't be loaded in Android because its jar packaging. So all the providers must be initialized by hand
    大概是说由于smack.providers 的文件不能载入asmack中导致的。所以必须我们自己手动载入一个。
     
    先复制下面代码:
     
    public static 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());
          
    }
     
    //
    在XMPPConnection实例化之前载入就可以解决了。
    configure(ProviderManager.getInstance());
     
  • 相关阅读:
    easyui combobox 获取焦点
    easyui combobox keyhandler使用
    easyui combobox 取值
    Tomcat启动超时问题Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
    spring定时器中如何获取servletcontext
    不用asp.net MVC,用WebForm照样能够实现MVC
    打印从1到最大的n位数
    [NOIP复习]第三章:动态规划
    Java并发与同步
    Bootstrap的js插件之按钮(button)
  • 原文地址:https://www.cnblogs.com/arnoid/p/3002542.html
Copyright © 2011-2022 走看看