2013-07-20 4 views
1

Pendant quelques heures, j'ai résolu ce problème. J'apprends l'API smack. Le problème est quand je cherche le copain (utilisateur) il donne toutes les options assorties. Par exemple j'ai ces utilisateurs: -user -user1 -user2Comment rechercher un utilisateur spécifique sur smack

Recherche "utilisateur" retourner tous ces utilisateurs. Je veux être renvoyé seulement un utilisateur qui correspond exactement. Comment puis-je faire ceci?

Form searchForm = search.getSearchForm("search.localhost"); 
Form answerForm = searchForm.createAnswerForm(); 

answerForm.setAnswer("Username", true); 
answerForm.setAnswer("search", "user"); 

ReportedData data = search.getSearchResults(answerForm, "search.localhost"); 
.... 

Merci

Répondre

0

Vous aurez besoin de chercher la JID exacte. Si votre nom de service est localhost et vous recherchez "JID", vous avez quelques options:

answerForm.setAnswer("search", "[email protected]");

ou

answerForm.setAnswer("search", "user" + "@" + connection.getServiceName);

ou

answerForm.setAnswer("search", "[email protected]" + connection.getServiceName);

Comment pour utiliser le ReportedData:

if (data != null) { 
     List<Row> rows = data.getRows(); 
     Iterator<Row> it = rows.iterator(); 
     while (it.hasNext()) { 
      Row row = it.next(); 
      List<String> values = row.getValues("jid"); 
      Iterator<String> iterator = values.iterator(); 
      if (iterator.hasNext()) { 
       String value = iterator.next(); 
       //Do what you want 
      } 
     } 
    } 
Questions connexes