availability.getMode() 和 availability.isAvailable 总是分别返回 null 和 false

Posted

技术标签:

【中文标题】availability.getMode() 和 availability.isAvailable 总是分别返回 null 和 false【英文标题】:availability.getMode() and availability.isAvailable always returns null and false respectively 【发布时间】:2014-05-05 11:37:06 【问题描述】:

我正在使用 xmpp 协议、ejabberd 服务器和使用 asmack 库开发 android 聊天应用程序。我想显示好友状态。但是无论好友在线还是离线,它总是显示离线状态,availability.getMode()总是返回null,availability.isAvailable总是返回false,无论好友在线还是离线。

这是我的代码。提前谢谢...

Roster roster = connection.getRoster();



    Collection<RosterEntry> entries = roster.getEntries();
    for (RosterEntry entry : entries) 
    


    System.out.println("Entry :"+entry);
    Presence availability = roster.getPresence(entry.getUser());
    Mode userMode = availability.getMode();
    Log.e("TAG", ""+userMode+" availability :"+availability.isAvailable());

                            retrieveState_mode(availability.getMode(),availability.isAvailable());



                        


    public static int retrieveState_mode(Mode userMode, boolean isOnline) 
                                    int userState = 0;
                                    *//** 0 for offline, 1 for online, 2 for away,3 for busy*//*
                                    if(userMode == Mode.dnd) 
                                        userState = 3;
                                     else if (userMode == Mode.away || userMode == Mode.xa)    
                                        userState = 2;
                                     else if (isOnline) 
                                        userState = 1;
                                    
                                    return userState;
                            

【问题讨论】:

你能获得参赛作品吗?我正在尝试获取用户列表,但 roster.getEntries() 方法总是向我返回 null,我们是否必须在 ejabberd 面板/服务器上进行任何设置? 【参考方案1】:

在您的代码中而不是使用availability.getMode() 使用availabilty.getType() 并检查它是否是Presence.Type.available。

【讨论】:

以上是关于availability.getMode() 和 availability.isAvailable 总是分别返回 null 和 false的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理