如何在Android 4.0以上版本中禁用主/菜单按钮?
我正在开发一个锁屏应用程序,到目前为止,我已经实现了该应用程序工作所需的一切 但我不能禁用Android设备中的主/菜单按钮,因为它是虚拟的,也是软的。我已经在SO和其他网站上找到了所有可能的答案,但没有找到 是否有任何经过测试和工作的解决方法?如何在Android 4.0以上版本中禁用主/菜单按钮?,android,android-homebutton,Android,Android Homebutton,我正在开发一个锁屏应用程序,到目前为止,我已经实现了该应用程序工作所需的一切 但我不能禁用Android设备中的主/菜单按钮,因为它是虚拟的,也是软的。我已经在SO和其他网站上找到了所有可能的答案,但没有找到 是否有任何经过测试和工作的解决方法? 提前感谢。一种方法是显示一个对话框,其中LayoutParamstype设置为type\u SYSTEM\u ERROR,并将此对话框的所有者设置为“锁定屏幕”活动,以阻止home按钮 下面是一个如何实现这一点的示例: 更新:看起来这只适用于Andro
提前感谢。一种方法是显示一个对话框,其中
LayoutParams
type设置为type\u SYSTEM\u ERROR
,并将此对话框的所有者设置为“锁定屏幕”活动,以阻止home按钮
下面是一个如何实现这一点的示例:
更新:看起来这只适用于Android 4之前的版本+
另一种方法是将contentView
直接添加到WindowManager,其中LayoutParams
类型设置为type\u SYSTEM\u ERROR
...
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);
这种方法的缺点是它看起来不支持更复杂的视图。我得到了很多在片段等列表视图闪烁
使用此功能的一些示例项目:
这里有更多类似问题的答案:我尝试过使用它,但没有成功。而且它只会阻止虚拟主密钥,对吗@触摸板当我尝试时,它阻止了硬主页按钮,但这是在三星4.1。威尔森·克里斯蒂安更新了答案,他说:“我稍后会对我的一个项目进行测试,看看它是否仍然有效。”。我做了测试,它看起来不再在4以上工作,但我发布的另一个方法应该是。(它实际上并没有阻止按钮,更像是用覆盖层隐藏内容)您更新的答案与我的设计不符。我希望禁用虚拟键和主菜单硬件这两种类型的键?你有任何关于阻止硬件主密钥的信息吗?@WilsonChristian这是我所知道的,我在棒棒糖上测试了第二个选项,它对我有效。请用代码示例更新您的问题,说明您迄今为止所做的工作。