0

Androidでopenfireサーバーを使用しています。ここで、オンラインのユーザー数とそのユーザーを確認する必要があります。接続は問題ありません。しかし、私がそれを確認すると、出力は次のようになります。


名簿エントリの存在が変更されたときに呼び出されます

名前:エスティ

ステータス: 利用不可

名簿エントリの存在が変更されたときに呼び出されます

名前:ロニ

ステータス: 利用不可


では、誰がオンラインかオフラインかを確認する方法。別の質問は、リクエストを自動的に受け入れる方法です。助けてください。

これが私のコードです:

public void OnlineUser()
{

    final Roster sroster = connection.getRoster();

    try {
        sroster.createEntry("esty", "roni", null);
    } catch (XMPPException e) {

        e.printStackTrace();
    }


     Presence presence = new Presence(Presence.Type.available);
     connection.sendPacket(presence);
 //  context.setConnection(Constants.connection);

    // final Roster roster =connection.getRoster();
     final Collection<RosterEntry> entries = sroster.getEntries();

    sroster.addRosterListener(new RosterListener() {
         @Override
         public void presenceChanged(Presence presence) {
           //Called when the presence of a roster entry is changed
             for (RosterEntry entry : entries) {



                    Log.v("roni", "Called when the presence of a roster entry is changed ");
                         Presence entryPresence = sroster.getPresence(entry.getUser());

                         Presence.Type type = entryPresence.getType();       
                         uName =entry.getName().toString();
                         uStatus=type.toString();
                         Log.v("roni", "Name: " + entry.getName().toString());
                         Log.v("roni", "Status: " +type.toString());

                 }
         }
         @Override
         public void entriesUpdated(Collection<String> arg0) {
           // Called when a roster entries are updated.
             for (RosterEntry entry : entries) {


                    Log.v("roni", "Called when a roster entries are updated ");
                         Presence entryPresence = sroster.getPresence(entry.getUser());

                         Presence.Type type = entryPresence.getType();       
                         uName =entry.getName().toString();
                         uStatus=type.toString();
                         Log.v("roni", "Namne: " + entry.getName().toString());
                         Log.v("roni", "Status: " +type.toString());

                 }
         }
         @Override
         public void entriesDeleted(Collection<String> arg0) {
           // Called when a roster entries are removed.
             for (RosterEntry entry : entries) {


                    Log.v("roni", "Called when a roster entries are removed. ");
                         Presence entryPresence = sroster.getPresence(entry.getUser());

                         Presence.Type type = entryPresence.getType();       
                         uName =entry.getName().toString();
                         uStatus=type.toString();
                         Log.v("roni", "Namne: " + entry.getName().toString());
                         Log.v("roni", "Status: " +type.toString());

                 }
         }
        @Override
         public void entriesAdded(Collection<String> arg0) {
           // Called when a roster entries are added.
            for (RosterEntry entry : entries) {


                Log.v("roni", " Called when a roster entries are added. ");
                     Presence entryPresence = sroster.getPresence(entry.getUser());

                     Presence.Type type = entryPresence.getType();       
                     uName =entry.getName().toString();
                     uStatus=type.toString();
                     Log.v("roni", "Namne: " + entry.getName().toString());
                     Log.v("roni", "Status: " +type.toString());

             }
         }
        });
4

1 に答える 1

0

LDAPで使用していますか?その場合は、[ユーザー/グループ] に移動して、グループを選択できます。連絡先リストのグループ共有を有効にすると、うまくいくはずです。

「連絡先リストのグループ共有を有効にする」。詳細については、私のスクリーンショットを参照してください。 ここに画像の説明を入力

それがあなたの問題を解決することを願っています。

于 2014-12-24T10:27:20.560 に答える