Smack - 以特定字母

时间:2018-01-02 20:45:52

标签: xmpp ejabberd smack

我使用Smack构建简单的XMPP android客户端,我需要检索用户只能以字母" a"我尝试过使用名册,而UserSearchManager都需要特定的用户名,我不能使用外卡,例如。

UserSearch userSearch = new UserSearch();
answerForm.setAnswer("user", "a*");

RosterEntry entry = roster.getEntry("a*");

任何帮助?

2 个答案:

答案 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