我知道,我知道,这是我不应该做的事情......但无论如何我都是这样做的,因为我的应用程序适合幼儿,我需要阻止访问主页密钥。
正如我在SO上找到的那样,要阻止主页按钮,我只需要这样做:
@Override
public void onAttachedToWindow()
{
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
}
这样做的主要缺点是状态栏是可见的,即使在清单文件中我已将其设置为全屏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
一种解决方案是在代码中设置全屏模式,所以我做
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
到目前为止,应用程序一直在全屏运行。一个主要问题是,如果用户按下电源按钮,则电话进入待机状态。再次按下并解锁屏幕时,应用程序再次显示状态栏。我无法再次设置窗口参数,因为它已经有内容。另外,我想禁用电源按钮,但我不知道如何。我可以拦截它被按下onKeyDown
但是我该如何让它不做任何事情?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_POWER:
????????
default:
return false;
}
}
关于这些问题的任何想法?谢谢大家。
答案 0 :(得分:0)
实际上,经过一些深度测试后,似乎设置了
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
产生不需要的行为,如:没有Toast消息,无响应的应用程序,如前所述,不允许全屏应用程序。所以我决定保留Home按钮,因为它是默认启用的。谷歌提供禁用按钮的可能性真的很不错......即使他们需要获得特殊许可。