在XMPP / Smack中获取模式

时间:2013-10-09 09:28:58

标签: xmpp asmack

我的聊天应用程序有一个程序来设置用户的状态/模式状态,即在线,离线,不可见,离开等。我使用以下代码执行此操作: -

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()中得到NULL,而且我总是将Status视为可用(在openfire门户中显示)

有人请帮忙吗?

1 个答案:

答案 0 :(得分:1)

userPresence.setMode(userPresence.getMode())对我来说似乎是无操作。

您应该将先前的模式存储在设备本身上(例如,在SharedPreferences