不允许用户使用主页按钮退出应用程序

时间:2011-09-30 06:49:50

标签: android

在我的应用程序中,我不希望用户能够在按主页按键时退出我的应用程序。不允许用户执行此操作的具体原因。任何人都可以建议什么是实现这一目标的正确方法?

目前我正在做的是覆盖onKeyDown() - 方法。其代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME) 
    {
       Intent intent = new Intent(this, LockScreen.class);
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(intent);
    }
    return true;
}

在Manifest文件中,我正在进行如下更改:

<activity android:name=".LockScreen"
  android:screenOrientation="portrait"
  android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
    <intent-filter>             
    <category android:name="android.intent.category.HOME"/>
    </intent-filter>
</activity>

4 个答案:

答案 0 :(得分:4)

我同意inazaruk但如果你仍然想这样做,那么你需要覆盖:

@Override
public void onAttachedToWindow() {

  this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
  super.onAttachedToWindow();

}

答案 1 :(得分:3)

Android不支持简单应用的此方案,因此您无法执行此操作。

阅读CommonsWare的这篇文章:Please ignore the Home Button。它将解释为什么以你想要的方式处理Home按钮并不是一个好主意。

答案 2 :(得分:0)

看看这个应用:Kid mode。它会执行您尝试执行的操作,以防止子级退出应用程序。

并且这样做,以便在启用时,此应用程序成为主屏幕应用程序,从而控制按主屏幕时发生的情况。

但是,用户必须单击才能将此应用设置为默认主屏幕应用,以使其正常工作。

答案 3 :(得分:0)

由于android使用堆栈结构,因此通过清除堆栈来关闭应用程序。每个后退按钮单击清除堆栈顶部,这就是应用程序退出的方式。单击主页突然关闭应用程序,但活动仍然在堆栈顶部。您可以在应用程序中间点击HOME按钮并再次输入您的应用程序,您可以看到您在进入HOME之前仍处于相同的活动状态。