我使用Smack构建简单的XMPP android客户端,我需要检索用户只能以字母" a"我尝试过使用名册,而UserSearchManager都需要特定的用户名,我不能使用外卡,例如。
UserSearch userSearch = new UserSearch();
answerForm.setAnswer("user", "a*");
或
RosterEntry entry = roster.getEntry("a*");
任何帮助?
答案 0 :(得分:0)
这是一个有效的片段:
public static List<Row> searchOnServerForUsers(String searchString, XmppManager xmppManager) throws Exception
{
UserSearchManager usersearchManager = new UserSearchManager(abstractXMPPConnection.getConnection());
String searchServiceName = XmppConstants.USER_SERVICE_NAME_PREFIX + abstractXMPPConnection.getConnection().getServiceName();
Form form = usersearchManager.getSearchForm( searchServiceName );
Form answers = form.createAnswerForm();
answers.setAnswer("Name", false);
answers.setAnswer("Email", false);
answers.setAnswer("Username", true);
// answers.setAnswer("search", "*"); //search for all registered users
answers.setAnswer("search", "a*"); //your search string
ReportedData data = usersearchManager.getSearchResults(answers, searchServiceName);
List<Row> rows = data.getRows();
return rows;
}
所以你必须使用UserSearch
,
(如Username
,注意案例!)
您必须设置搜索(true
)或不搜索(false
)
您的search
字符串(在您的用例中:&#34; a*
&#34;)
答案 1 :(得分:0)
不要使用smack版本4.4.0 alpha1,它有一些错误。将其还原为4.1.1之后。我得到了所有用户。来自UserSearchManager