Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XMPP/Smack中的Get模式_Xmpp_Asmack - Fatal编程技术网

XMPP/Smack中的Get模式

XMPP/Smack中的Get模式,xmpp,asmack,Xmpp,Asmack,我的聊天应用程序有一个设置用户状态的过程,即在线、离线、不可见、离开等。我使用以下代码进行设置:- presence = new Presence(Presence.Type.available); if (USER_STATE.equalsIgnoreCase("Online")) { presence.setMode(Presence.Mode.available); setUserPresence(0

我的聊天应用程序有一个设置用户状态的过程,即在线、离线、不可见、离开等。我使用以下代码进行设置:-

presence = new Presence(Presence.Type.available);

            if (USER_STATE.equalsIgnoreCase("Online")) {
                presence.setMode(Presence.Mode.available);
                setUserPresence(0);
            }else if (USER_STATE.equalsIgnoreCase("Invisible")) {
                presence.setMode(Presence.Mode.xa);
                setUserPresence(1);
            } else if (USER_STATE.equalsIgnoreCase("Away")) {
                presence.setMode(Presence.Mode.away);
                setUserPresence(2);
            } else if (USER_STATE.equalsIgnoreCase("Busy")) {
                presence.setMode(Presence.Mode.dnd);
                setUserPresence(3);
            }
在这里,我将用户状态设置为“离开”或“不可见”,然后注销用户。现在,当用户再次登录时,我想获取自上次注销以来他先前设置的用户模式。我的理解是:-

System.out.println("Loggeddd innn");
            // Set presence to online!
            Presence userPresence = new Presence(Presence.Type.available);
            userPresence.setStatus("Hello CCM!");
            userPresence.setPriority(24);
            userPresence.setMode(userPresence.getMode());
            connection.sendPacket(userPresence);
在这里,我总是在
user.getMode()
中获取空值,并且总是获取可用状态(如openfire门户中所示)

有人请帮忙吗?

userPresence.setMode(userPresence.getMode())对我来说似乎是个禁忌


您应该在设备本身上存储以前的模式(例如在
SharedReferences

好的,这是唯一的最后一个相同的选项?这里我的问题是,Gtalk如何在不本地保存状态信息的情况下管理相同的事情???如果用户使用相同的凭据登录到其他设备,会发生什么情况??如果状态信息存储在本地,那么如何将其更新到用户现在已登录的新移动设备???让我们尽量准确地说:状态(可用)永远不应存储在本地。状态信息包可能包含1)属性(dnd、away、chat和xa),这些属性映射到setMode Smack api。2) 这是一个文本字符串。如果服务器坚持这些,我会感到惊讶,但您可以通过a)使用userA登录并将状态设置为“ABC”,然后再次注销b)使用userB登录(假设a en b是朋友)来测试这一点并查看userB的传入状态数据包是否包含此状态字符串。当用户注销并再次登录时,状态数据包始终显示null。这是我们的主要问题me@GauravArora:嗨,我正在创建聊天应用程序。你能告诉我从哪里开始,我需要什么资源吗?比如服务器等等。