我正在使用asmack 4.0.5并想要最后一次看到用户。我尝试使用:
LastActivityManager lActivityManager = LastActivityManager.getInstanceFor(mConnection);
try {
Log.v(TAG,"Last Activity: " + ActivityManager.getLastActivity(pArg0.getFrom()));
} catch (NoResponseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XMPPErrorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotConnectedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但这总是会返回0秒。应该就像应用程序处于后台时那样用户应该显示为离线。用户只有在前台有应用程序才能在线。有人知道如何最后看到用户。
答案 0 :(得分:0)
当它上线时,应该发送状态为“在线”的数据包,当它离线时发送“离线”(当应用程序进入后台时,发送'离线' )。只有现在服务器才能让别人知道他们问什么。
现在,当A想要知道B的最后一次看到状态并且服务器返回0时,那么根据文档,这意味着,B已经在线.. :)否则它将是经过的时间。请阅读此处了解更多详情。
答案 1 :(得分:0)
到目前为止,我一直工作到目前为止我看到为了最后一次看到你必须实现xep 92,并确保你的服务器支持this.else使用你的名册的最后一个活动。显示上次看到.. 并保持数据库存储这个...并在存在数据包的帮助下,您可以得到它。或者修改您的消息包,以便在他/她上线时发送名册的存在并在他/她离线时发送其他人。并且花时间与这个数据包。当你接收(你)收到这个数据包然后更新Db。 希望表明你可以理解。:)