总是想打开登录界面

时间:2015-02-02 12:56:44

标签: android android-activity

我有一个Android应用程序,其中我有4个活动,A,B,C和D

在活动A中是我的登录屏幕

如果用户在B,C或D中,如果用户按下B,C或D的主页按钮,应用程序将关闭,默认情况下,android主屏幕将会出现,如果他们再次打开该应用程序,那些只有那个Activity从他们按Home键的位置打开。

我希望他们重定向到登录页面。

注意:我不能使用onpause()和onstop()因为我正在从一个活动连续移动到另一个活动。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用     机器人:noHistory = “真” 活动b,c和d的清单中的标志。当用户按下主页按钮时,这将强制应用程序显示其中一个活动可见时的主要活动。

答案 1 :(得分:0)

在活动暂停时写下此代码

ActivityManager activityManager = (ActivityManager)getBaseContext()
                .getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
        String packageLaunched = runningTasks.get(0).baseActivity.getPackageName();

        if (!packageLaunched.contains("yourPackageName")) {
               ///// some constant == true
        }

这会让你知道你搬出了应用程序!
在那里你将保持一个恒定的旗帜。

然后onResume你应该再次检查标志,如果它是真的(即用户按下主页按钮)将用户重新指向你想要的任何页面。
我希望你明白这一点。

干杯:)

答案 2 :(得分:0)

以下是一些可能的解决方法。 选项1:

一个选项可能是将ActivityStateManager.xml文件保存在您的应用程序文件夹中,您将在启动应用程序时阅读该文件夹。在此xml文件中,您可以保留基本属性StartLoginAcivity = true / false。

创建一个MainActivity,它将被我们的所有活动扩展,B,C,D除外,并覆盖主页按钮并将ActivityStateManager.xml中的StartLoginAcivity属性设置为false。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {           

    // set StartLoginAcivity property in ActivityStateManager.xml to true    
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

覆盖活动B,C,D(或将通过这些活动扩展的RequireLoginActivity中)的主页按钮,并将ActivityStateManager.xml中的StartLoginAcivity属性设置为true。

启动应用程序时,请阅读ActivityStateManager.xml,如果StartLoginAcivity = true,请打开LoginActivity。

选项2:

覆盖活动B,C,D(或将通过这些活动扩展的RequireLoginActivity)中的主页按钮,并强制关闭app How to close an android application?。启动应用时,它将打开您的默认主要活动

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {

    // force close app

     Intent homeIntent = new Intent(Intent.ACTION_MAIN);
     homeIntent.addCategory( Intent.CATEGORY_HOME );
     homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
     startActivity(homeIntent);
  }

      return true;
            //return super.onKeyDown(keyCode, event);
    }