如何禁用Android 4.0以上的主页/菜单按钮?

时间:2016-01-13 18:17:03

标签: android android-homebutton

我正在开发一个锁屏应用程序,到目前为止已经实现了应用程序运行所需的一切。

但我无法在Android设备中禁用可用的虚拟主页/菜单按钮。我已经在SO和其他网站上找到了所有可能的答案,但无法实现。

是否有任何经过测试和工作的解决方法? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

一种方法是显示LayoutParams类型设置为TYPE_SYSTEM_ERROR的对话框,并将此对话框的所有者设置为“锁屏”活动以阻止主页按钮。

以下是一个如何完成此操作的示例: 更新:看起来只适用于Android 4.之前的版本 https://github.com/Joisar/LockScreenApp/blob/master/LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenUtils.java

另一种方法是将contentView直接添加到LayoutParams类型设置为TYPE_SYSTEM_ERROR

的WindowManager中
...
onCreate(){

    //setContentView(R.layout.main_content);
    //instead add a View directly to the WindowManager
    View contentView = View.inflate(this, R.layout.main_content, null);
    LayoutParams lockLayoutParams = new LayoutParams();
            lockLayoutParams.width = LayoutParams.MATCH_PARENT;
            lockLayoutParams.height = LayoutParams.MATCH_PARENT;
            lockLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR;

            //LOCK
            getWindowManager().addView(contentView, lockLayoutParams);

...
            //UNLOCK
            getWindowManager().removeView(contentView);

我采用这种方法的缺点是它看起来不支持更复杂的视图。我在Fragments等中使用了ListViews闪烁了很多。

使用它的一些示例项目:

https://github.com/Chin-Z/ArcherKeyguard/blob/master/src/com/lovewuchin/app/archerkeyguard/util/LockLayer.java

https://github.com/radames/ScreenLock-Android/blob/master/src/com/eva/me/mysquarescreenlock/lockutil/LockLayer.java

此处有类似问题的更多答案: How to disable Home and other system buttons in Android?