Статус всех контактов Gtalk недоступен

Я использую asmack api для интеграции gtalk с моим приложением для Android, я могу войти в систему, могу отправлять сообщения моему контактному пользователю, но я хочу знать статус всех контактов, будь то онлайн или офлайн, я использовал список, чтобы узнать это, но показываю все доступность пользователей в автономном режиме никто не появляется в сети, хотя на самом деле есть некоторые пользователи, которые находятся в сети и хотят знать, что происходит не так. кто-нибудь может помочь? вставив мой код ниже здесь:

Roster roster= connection.getRoster();
        roster.setSubscriptionMode(Roster.getDefaultSubscriptionMode());
        Collection<RosterEntry> entries = roster.getEntries();
        Presence presence2;

                for(RosterEntry entry : entries) {
                    presence2 = roster.getPresence(entry.getUser());

                    System.out.println(entry.getUser());
                    System.out.println(presence2.getType());
                   // System.out.println(presence2.getStatus());
                }

пробовал и с присутствия2.getMode(), но он возвращает ноль. любая помощь будет оценена


person mayank_droid    schedule 28.02.2012    source источник


Ответы (2)


В какой момент вы пытались получить ростер? Вы пробовали присутствия2.isAvailable()? Я также рекомендую установить прослушиватель списка, иначе ваш список не будет обновляться при изменении присутствия любого пользователя.

person CChi    schedule 29.02.2012
comment
тогда я не могу точно сказать, что происходит без дополнительного кода. Я в основном сделал что-то подобное, и я получаю присутствие всех пользователей. также был в состоянии обновить присутствие пользователя, когда они выходят в сеть в автономном режиме - person CChi; 29.02.2012

Вот что я сделал для своего класса BuddyList. Я передал свой gridview классу buddylist и запустил этот код в потоке, чтобы обновить массивы, подключенные к адаптеру. Я знаю, что этому несколько месяцев, но решил, что в какой-то момент это поможет кому-то другому. Просто убедитесь, что вы вызываете updateBuddies из нового потока. Обязательно закрывайте эту ветку, когда вы покидаете активность, в которой размещается список друзей. Ваше здоровье.

http://i.imgur.com/4o7JLkx.png

    private void updateBuddies() {
    final Roster roster = connection.getRoster();
    roster.addRosterListener(new RosterListener() {

        @Override
        public void entriesAdded(Collection<String> arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void entriesDeleted(Collection<String> arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void entriesUpdated(Collection<String> arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void presenceChanged(Presence arg0) {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    addressA.clear();
                    nameA.clear();
                    modeA.clear();
                    availA.clear();
                    statusA.clear();
                    grid.invalidateViews();
                    Collection<RosterEntry> entries = roster.getEntries();
                    for(RosterEntry r:entries) {
                        if (r.getName() != null) {
                            String email = r.getUser();
                            String name = r.getName();
                            Presence pres = roster.getPresence(r.getUser());

                            if (pres != null) {
                                addressA.add(email);
                                nameA.add(name);
                                modeA.add(""+pres.getMode());
                                availA.add(""+pres.getType());
                                statusA.add(""+pres.getStatus());   
                            }
                        }
                    }
                    adapter.notifyDataSetChanged();
                }});
        }});
    }
person MrLithid    schedule 29.04.2013