如何防止用户从MainMenu定向到loginActivity(MainActivity)

时间:2016-12-29 00:39:31

标签: android android-activity

我编写了一个需要XMPP连接的消息传递应用程序。当用户更改应用程序内的页面时,一切正常。当我向他发送通知并点击它以返回我的应用程序时,一切都还可以。但当他试图从他的最后一次申请中回到我的申请时#34;页面我的应用程序将他重定向到我的登录屏幕。由于他已经连接,他无法再次登录,因此他被困在那里。如何将某人从主菜单重定向到登录以外的其他屏幕(我认为它会将他发送到登录,因为它是我的主要活动。)通过发送通知,我可以轻松指定目标。这是我在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进行了覆盖,并使其与home按钮相同。这是代码

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

1 个答案:

答案 0 :(得分:2)

我建议您将代码放在onResume()而不是onRestart()内,因为每次您的应用进入前景状态时,都会调用此处的代码行。

您的代码似乎没问题。您是否可以确保在成功登录后致电apply()commit()到您的Shared Preference交易?

例如,

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