在Android上恢复后设置窗口全屏属性

时间:2011-09-20 12:33:06

标签: android button fullscreen

我知道,我知道,这是我不应该做的事情......但无论如何我都是这样做的,因为我的应用程序适合幼儿,我需要阻止访问主页密钥。

正如我在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;
                }
        }

关于这些问题的任何想法?谢谢大家。

1 个答案:

答案 0 :(得分:0)

实际上,经过一些深度测试后,似乎设置了

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

产生不需要的行为,如:没有Toast消息,无响应的应用程序,如前所述,不允许全屏应用程序。所以我决定保留Home按钮,因为它是默认启用的。谷歌提供禁用按钮的可能性真的很不错......即使他们需要获得特殊许可。