android - 如何防止用户从主菜单重定向到登录 Activity (MainActivity)

标签 android android-activity

我编写了一个需要 XMPP 连接的消息传递应用程序。当用户在应用程序内更改页面时一切正常。当我向他发送通知并且他单击它返回我的应用程序时,一切也都很好。但是当他试图从他的“最后一个应用程序”页面返回到我的应用程序时,我的应用程序将他重定向到我的登录屏幕。由于他已连接,因此无法再次登录,因此他被困在那里。我怎样才能将某人从他的主菜单重定向到登录以外的另一个屏幕(我认为它会让他登录,因为它是我的主要 Activity 。)通过发送通知,我可以轻松地指定 Intent 目标。这是我在 loginActivity 中尝试的。

 protected void onRestart() {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        boolean loginStatus=prefs.getBoolean("xmpp_logged_in",true);
        if (loginStatus) {
            Intent intent = new Intent(this, ConversationActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
        }
        super.onRestart();
    }

我有一个解决方案,但它不是一个很好的解决方案。我的应用遵循此屏幕登录 - 显示联系人 - 与用户的消息。
所以在 Show Contacts 中,我覆盖了 onBackPressed 并使其与主页按钮相同。这是代码

public void onBackPressed() {
        Intent setIntent = new Intent(Intent.ACTION_MAIN);
        setIntent.addCategory(Intent.CATEGORY_HOME);
        setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(setIntent);
    }

最佳答案

我建议将您的代码放在 onResume() 而不是 onRestart() 中,因为每次您的应用程序都会调用此处的代码行会更令人放心进入前台状态。

您的代码似乎没问题。您能否确保在成功登录后对您的Shared Preference 事务调用了apply()commit()

例如,

prefs.edit().putBoolean("xmpp_logged_in", true).commit();

关于android - 如何防止用户从主菜单重定向到登录 Activity (MainActivity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371698/

相关文章:

android - Galaxy S3 - 以纵向模式拍照会破坏 Activity

android - 使用 android studio 错误启动 Android 应用程序 : Fatal signal 13 SIGPIPE code -6

如果应用程序关闭,后台的android通知?

android - 如何保持 Activity 在后台运行?

java - 无法解决方法占位符 fragment 错误

Android:视频不从原始文件夹播放

Android 处理程序仅使用最后一个 setText() 更新 TextView

android - 如何使用 sax 解析器解析像这样丑陋的结构化 XML

java - setDisplayHomeAsUpEnabled 在我的一项 Activity 中不起作用,但在其他地方它确实有效

JavaScript棋盘游戏: looking for optimization