asmack 搜索好友报空指针解决方案

来源:互联网 发布:淘宝权重的因素 编辑:程序博客网 时间:2024/06/05 17:44

第一种


在  connection.connect();  建立连接之前 

调用这个方法

SmackAndroid.init(this);

第二种

public static void configure(ProviderManager pm) { // Private Data Storagepm.addIQProvider("query", "jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider()); // Timetry {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 Exchangepm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider()); // Message Eventspm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider()); // Chat Statepm.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()); // XHTMLpm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider()); // Group Chat Invitationspm.addExtensionProvider("x", "jabber:x:conference", new GroupChatInvitation.Provider()); // Service Discovery # Itemspm.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider()); // Service Discovery # Infopm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider()); // Data Formspm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider()); // MUC Userpm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new MUCUserProvider()); // MUC Adminpm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new MUCAdminProvider()); // MUC Ownerpm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new MUCOwnerProvider()); // Delayed Deliverypm.addExtensionProvider("x", "jabber:x:delay", new DelayInformationProvider()); // Versiontry {pm.addIQProvider("query", "jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version"));} catch (ClassNotFoundException e) {// Not sure what's happening here.} // VCardpm.addIQProvider("vCard", "vcard-temp", new VCardProvider()); // Offline Message Requestspm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider()); // Offline Message Indicatorpm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider()); // Last Activitypm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider()); // User Searchpm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider()); // SharedGroupsInfopm.addIQProvider("sharedgroup", "http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider()); // JEP-33: Extended Stanza Addressingpm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new MultipleAddressesProvider()); // FileTransferpm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider()); pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider()); // Privacypm.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());}

在connection.connect();  建立连接之前 

调用

configure(ProviderManager.getInstance());
/**  * 查询用户 *  * @param connection * @param serverDomain * @param userName * @return * @throws XMPPException */public static List<UserBean> searchUsers(XMPPConnection connection,String userName) throws XMPPException      {          List<UserBean> results = new ArrayList<UserBean>();          System.out.println("查询开始..............."+connection.getHost()+connection.getServiceName());          UserSearchManager usm = new UserSearchManager(connection);          Form searchForm = usm.getSearchForm("search."+connection.getServiceName());          Form answerForm = searchForm.createAnswerForm();          answerForm.setAnswer("Username", true);          answerForm.setAnswer("search", userName);          ReportedData data = usm.getSearchResults(answerForm, "search."+connection.getServiceName());           Iterator<Row> it = data.getRows();           Row row = null;           UserBean user = null;           while(it.hasNext())  {               user = new UserBean();               row = it.next();               user.setUsername(row.getValues("Username").next().toString());               user.setName(row.getValues("Name").next().toString());               user.setEmail(row.getValues("Email").next().toString());               System.out.println(row.getValues("Username").next());               System.out.println(row.getValues("Name").next());               System.out.println(row.getValues("Email").next());               results.add(user);               //若存在,则有返回,UserName一定非空,其他两个若是有设,一定非空           }           Toast.makeText(context, results.size()+"",1000).show();         return results;      }  


0 0