【问题标题】:Get List of all users from Openfire Server in Android从 Android 中的 Openfire Server 获取所有用户的列表
【发布时间】:2014-09-27 17:43:57
【问题描述】:

您好,我正在使用 xmpp 和 open-fire for server 在 android 中开发一个聊天应用程序,

目前我可以创建新用户并使用该用户登录。

我在网上搜索了很多并尝试了不同的解决方案,但没有任何效果。

在服务器上,所有用户都会自动添加到一个默认组中。创建新用户时。

但我无法获得所有用户的列表,直到我将他们添加到我的名册中。

我的要求是显示所有用户的列表并允许用户添加他们的朋友,如何让所有用户列出不是我朋友的人?

我尝试从组中获取用户列表,但仍然没有成功,我只能使用以下代码检索我朋友的用户列表。

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());   
            }   
        }

感谢任何帮助/解决方案或获得所有用户列表的建议。

谢谢。

【问题讨论】:

    标签: java android xmpp openfire


    【解决方案1】:

    以下代码对我有用:

    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);
    
        }
    }
    

    【讨论】:

    • 你确定@Prshant patil 吗?
    • 是的,我已经在我的应用程序中使用了它,它正在工作@Devendra Singh
    • 如何用上面的代码检查用户是否在线/离线?
    【解决方案2】:

    我可以提出以下建议:

    1. 在服务器上设置“共享名册”,看看https://community.igniterealtime.org/docs/DOC-1619 - 每个用户都将拥有名册中的所有服务器用户。
    2. 当用户将某人标记为“朋友”时 - 将该用户添加到某个组,例如“朋友们”。并将该组显示为用户名册。

    【讨论】:

    • 感谢您的建议。我会看看那些链接,让你知道它是否适合我
    猜你喜欢
    • 2014-03-20
    • 2016-07-28
    • 2013-12-15
    • 2013-12-29
    • 1970-01-01
    • 2014-11-06
    • 2016-03-03
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多