如何在按下主页按钮时不重启我的应用程序?

时间:2015-02-20 12:27:59

标签: android android-homebutton

我有一个应用程序在intent-filters文件中使用AndroidManifest.xml在按下主页按钮时启动Activity。事情是,如果我的应用程序在不同的活动中,那么LoginActivity将再次启动,用户必须再次登录。如果我的应用程序位于最顶层,我希望主页按钮不执行任何操作。

我怎么能这样做?

    <activity 
        android:name="com.example.LoginActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>            

3 个答案:

答案 0 :(得分:0)

不建议更改“主页”按钮功能,因为这样做会带来负面的用户体验。相反,如果用户登录,您可以将变量存储为变量,如果为true,则直接跳转到主要活动。

我不知道您的启动活动是什么,但如果是登录活动,您可以查看onStart方法我所说的内容,然后启动其他活动。

答案 1 :(得分:0)

您应该通过自己的触发器(静态变量?)来检查您的应用正在运行并且用户提前登录,然后启动另一项活动并完成当前

试试这个 android:launchMode="singleTop" 在你的活动清单中。

答案 2 :(得分:0)

有三种方法可以做到这一点:

  1. 在2.3和4.0之间工作:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {
            // do nothing                     
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    
  2. 也适用于2.3和4.0之间:

    @Override public void onAttachedToWindow() { 
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow(); 
    }
    
  3. 这涉及覆盖方法onUserLeaveHint()

    @Override
    protected void onUserLeaveHint() {
        Intent intent = getIntent();
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        ((AlarmManager) this.getSystemService(ALARM)).set(1,
                System.currentTimeMillis(),
                PendingIntent.getActivity(this, 0, intent, 0));
        }
        super.onUserLeaveHint();
    }