Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Android中的Openfire服务器获取所有用户的列表_Java_Android_Xmpp_Openfire - Fatal编程技术网

Java 从Android中的Openfire服务器获取所有用户的列表

Java 从Android中的Openfire服务器获取所有用户的列表,java,android,xmpp,openfire,Java,Android,Xmpp,Openfire,您好,我正在开发一个android聊天应用程序,使用xmpp和open fire for server 目前我可以创建新用户并使用该用户登录 我在网上搜索了很多,尝试了不同的解决方案,但都没有成功 在服务器上,所有用户都会自动添加到一个默认组中。当创建新用户时 但我无法得到所有用户的名单,直到我将他们添加到我的名册 我的要求是显示所有用户的列表并允许用户从中添加朋友,如何让所有用户列出那些不是我朋友的人? 我尝试从组中获取用户列表,但仍然没有成功,我只能通过以下代码检索到我的朋友的用户列表。 R

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

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

我在网上搜索了很多,尝试了不同的解决方案,但都没有成功

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

但我无法得到所有用户的名单,直到我将他们添加到我的名册

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

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

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());   
            }
花名册=xmppConnection.get花名册(); 集合条目=花名册.getEntries(); 对于(名册条目1:条目) { System.out.println(“UserID:-”+entry1.getUser()); System.out.println(“Name:-”+entry1.getName()); System.out.println(“状态:-”+entry1.getStatus()); System.out.println(“type:-”+entry1.getType()); } 使用以下代码从组i检索用户条目

    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());   
            }   
        }
花名册=xmppConnection.get花名册(); 集合组=花名册.getGroups(); for(罗斯特group组:组) { System.out.println(“组名:-“+Group.getName()); 集合条目=花名册.getEntries(); 对于(名册条目1:条目) { System.out.println(“UserID:-”+entry1.getUser()); System.out.println(“Name:-”+entry1.getName()); System.out.println(“状态:-”+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);
    
        }
    }
    
    UserSearchManager usm=新的UserSearchManager(连接);
    Form searchForm=usm.getSearchForm(“search.+connection.getServiceName());
    //我在这里搜索服务名称
    Form answerForm=searchForm.createAnswerForm();
    UserSearch UserSearch=newusersearch();
    answerForm.setAnswer(“用户名”,true);
    setAnswerForm.setAnswer(“搜索”,“*”);
    ReportedData data=userSearch.sendSearchForm(连接,应答形式,“搜索”。+connection.getServiceName());
    if(data.getRows()!=null){
    System.out.println(“非空”);
    迭代器it=data.getRows();
    arryAllUsers.clear();
    while(it.hasNext()){
    //系统输出打印项次(“行”);
    ReportedData.Row Row=it.next();
    迭代器迭代器=row.getValues(“jid”);
    if(iterator.hasNext()){
    String jid=iterator.next().toString();//在这里我得到了所有用户的公开信息。。
    //l.增加(价值);
    }
    //Log.i(“Iteartor值……”,“+value”);
    }
    }
    
    谢谢您的建议。我会查看这些链接,让你知道它对我有效还是无效?你确定@Prshant patil?是的,我已经在我的应用程序中使用过,并且它有效@Devendra singhh你如何使用上述代码检查用户是否在线/离线?