在我的应用程序中,我不希望用户能够在按主页按键时退出我的应用程序。不允许用户执行此操作的具体原因。任何人都可以建议什么是实现这一目标的正确方法?
目前我正在做的是覆盖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>
答案 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之前仍处于相同的活动状态。