簡體   English   中英

從Android中的Openfire Server獲取所有用戶的列表

[英]Get List of all users from Openfire Server in Android

您好我正在使用xmpp開發一個聊天應用程序,並在服務器上使用open-fire,

目前我可以創建新用戶並使用該用戶登錄。

我在網上搜索了很多,並嘗試了不同的解決方案,但沒有任何工作。

在服務器上,所有用戶都會自動添加到一個默認組中。 當新用戶被創建時。

但我無法獲得所有用戶的列表,直到我將它們添加到我的名冊。

我的要求是顯示所有用戶的列表,並允許用戶添加他們的朋友,如何讓所有用戶列出那些不是我朋友的人?

我試圖從組中獲取用戶列表,但仍然沒有成功,我只能通過以下代碼檢索那些是我的朋友的用戶列表。

Roster roster = xmppConnection.getRoster();
        Collection<RosterEntry> entries = roster.getEntries();

            for(RosterEntry entry1 : entries)
            {
                System.out.println("UserID:- " + entry1.getUser());
                System.out.println("Name:- " + entry1.getName());
                System.out.println("Status:- " + entry1.getStatus());
                System.out.println("type:- " + entry1.getType());   
            }

從我使用以下代碼的組中檢索用戶條目

    Roster roster = xmppConnection.getRoster();
    Collection<RosterGroup> groups = roster.getGroups();
    for(RosterGroup group: groups )
            {
                System.out.println("Group Name:- " + group.getName());
            Collection<RosterEntry> entries = roster.getEntries();

            for(RosterEntry entry1 : entries)
            {
                System.out.println("UserID:- " + entry1.getUser());
                System.out.println("Name:- " + entry1.getName());
                System.out.println("Status:- " + entry1.getStatus());
                System.out.println("type:- " + entry1.getType());   
            }   
        }

任何幫助/解決方案或建議,以獲得所有用戶列表表示贊賞。

謝謝。

以下代碼對我有用:

UserSearchManager usm = new UserSearchManager(connection);

Form searchForm = usm.getSearchForm("search." + connection.getServiceName());
//Here i am searching for the service name

Form answerForm = searchForm.createAnswerForm();

UserSearch userSearch = new UserSearch();
answerForm.setAnswer("Username", true);

answerForm.setAnswer("search", "*");

ReportedData data = userSearch.sendSearchForm(connection, answerForm, "search." + connection.getServiceName());

if (data.getRows() != null) {
    System.out.println("not null");

    Iterator<ReportedData.Row> it = data.getRows();

    arryAllUsers.clear();

    while (it.hasNext()) {

        //System.out.println("row");

        ReportedData.Row row = it.next();

        Iterator iterator = row.getValues("jid");

        if (iterator.hasNext()) {

            String jid = iterator.next().toString(); //here i get all the user's of the open fire..
            // l.add(value);

        }

        // Log.i("Iteartor values......"," "+value);

    }
}

我可以建議如下:

  1. 在服務器上設置“共享名冊”,看看https://community.igniterealtime.org/docs/DOC-1619 - 每個用戶都將擁有名冊中的所有服務器用戶。
  2. 當用戶將某人標記為“朋友”時 - 將該用戶添加到某個組,例如“朋友”。 並將該組顯示為用戶的名單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM