Não é possível obter a presença do plantel usando smack, openfire

Eu sou novo para beijar API. Eu estou tentando desenvolver um aplicativo de bate-papo onde eu estava tentando definir e obter a presença.

Quando eu mudo a presença de um usuário, ele funciona perfeitamente e está se refletindo no Openfire Server.

Mas quando eu tento obter a presença de um usuário, estou sempre ficando o status como "indisponível", mesmo que sua presença em openfire está mostrando como "disponível".

Eu estou usando o seguinte código para definir o status.

        Presence presence = new Presence(Presence.Type.available);
        presence.setStatus("Online, Programmatically!");
        presence.setPriority(24);
        presence.setMode(Presence.Mode.available);
        user.getConnection().sendPacket(presence);

Eu estou usando a classe Roster para obter a presença da seguinte forma.

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

for(RosterEntry rosterEntry: entries) {
    String user = rosterEntry.getUser();

    Presence presence = roster.getPresence(user);

    System.out.println("Presence : "+presence);                                     // 1
    System.out.println("Presence type: "+presence.getType());                // 2
    System.out.println("Presence mode: "+presence.getMode());             // 3

}

Linha Nº 1 alwasys dá 'indisponível' enquanto a linha número 2 e 3 sempre dá null

Eu não sou capaz de descobrir a causa deste problema. Por favor, me ajude a resolver este problema.

Desde já, obrigado.

questionAnswers(5)

yourAnswerToTheQuestion