2015-01-06 1 views
0

나는 android에서 채팅 응용 프로그램을 만들고 openfire xmpp 용 asmack 라이브러리를 사용하고 있습니다. 서버에서 모든 사용자를 얻는 데 막혔습니다. 나는 많은 코드를 시도했지만 그들 중 누구도 내가 원하는대로 일하지 않았다. 내가 서버에서해야 할 일은 수동으로 그룹에 사용자를 추가 한 다음 개인적으로 생성 한 그룹 내에서 사용자를 얻으려면asmack을 사용하여 Openfire 서버의 모든 사용자를 android로 가져 오기

private ArrayList<String> getAllUsers(int num) { 

    ArrayList<String> users = new ArrayList<String>(); 
    Roster roster = connection.getRoster(); 

    System.out.println("**Number Users: " + roster.getEntryCount()); 
    Collection<RosterEntry> entries = roster.getEntries(); 
    for (RosterEntry entry : entries) { 
     users.add(entry.getName()); 
     System.out.println("User: " + entry.getName()); 
    } 
    System.out.println("**Number Users: " + roster.getEntryCount()); 

    return users; 
} 

을 사용하는 것입니다. 내가 얻고 싶은 것은 openfire에서 모든 사용자를 사용할 수 있거나 openfire에서 특정 그룹에 사용자를 추가 할 수있는 방법입니다. 어떻게해야합니까?

그룹을 사용하여 사용자를 확보 할 수 있다면 특정 그룹에 사용자를 동적으로 추가하는 방법은 무엇입니까?

+0

공유 그룹? https://community.igniterealtime.org/docs/DOC-1619 – vitalyster

+0

이것은 내 문제의 절반을 해결합니다. 왜 수동으로 그룹에 사용자를 추가해야합니까? 그룹을 사용하는 경우 코드를 사용하여 동적으로 그룹에 추가하는 방법 !!! –

+0

http://stackoverflow.com/questions/27135055/is-it-possible-to-get-all-users-list-which-contain-in-the-openfire/27233055#27233055 괜찮을 것입니다. –

답변

0

아래와 같이 Roaster을 사용하십시오.

 Roster roster = Roster.getInstanceFor(connection); 
     Collection<RosterEntry> entries = roster.getEntries(); 
     for (RosterEntry rosterEntry : entries){ 

      System.out.println("xmpp.Roster.user "+ rosterEntry.getUser()); 
      System.out.println("xmpp.Roster.type "+ rosterEntry.getType().name()); 
      System.out.println("xmpp.Roster.presence "+ roster.getPresence(rosterEntry.getUser()).getType()); 
     } 
관련 문제