我编写了一个需要 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/