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