我正在开发一个应用程序,其中用户应该只能使用一个应用程序,他不应该能够使用 HOME 按钮切换应用程序,该应用程序。只有当用户按下关闭按钮时才应该关闭。我已经设法覆盖返回按钮,不知道如何禁用 HOME 按钮。
5 回答
当应用程序在后台时,这是不可能在 android 中禁用 Home 按钮的,因为如果可能的话,某些应用程序可能总是禁用 Home 按钮。因此,这就是开发人员在后台应用程序时无法禁用主页按钮的原因。但是在Activity中,可以截取home键。
在 Activity 中,您可以禁用 android 中的 Home 键。它仅适用于 Android 3.x。
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
这在 iOS 上根本不可能使用代码。
实际上,可以使用以下方法阻止主页按钮:
使用安全漏洞,至少在旧的 android 版本上。这是在一些储物柜应用程序上完成的。我认为有些甚至在较新的 android 版本上仍然有效,但这是一种风险,并且在某些设备上可能存在错误。我知道“widgetLocker”和“Picture Password Lockscreen”会尝试这些漏洞。我不确定他们现在与他们合作得如何。成为锁屏的最佳解决方案是 #2 。
使您的应用程序成为启动器应用程序,它将处理主页按钮(当然用户必须确认)。这种应用程序的一个例子是“MagicLocker”,实际上任何启动器应用程序......
使用有根设备。我不知道该怎么做,但我认为这是很有可能的。
不是一种完全阻塞的方法,但您可以让您的应用程序全屏并在顶部(使用 TYPE_SYSTEM_ALERT 窗口布局类型),因此不会捕获主页按钮,但用户不会看到您的应用程序背后发生了什么。缺点是任何其他按钮都不会被您的应用程序捕获,因为它并不是真正在前台。
HOME 按钮的一种用途是用于紧急情况。
任何房子、公寓……都有应急方法,比如应急门(出口)、玻璃破碎机(斧头、蝙蝠……);它可以挽救生命。同样,在 Android/iOS 手机上,HOME 按钮可以挽救用户的生命(嗯,有点)。如果 HOME 按钮已死,则认为手机已死,并且需要立即重新启动以进行刷新。该按钮就是为这样的目的而设计的,这样开发人员就不会搞砸一切。
就个人而言,我有点感谢 Android/iOS 框架团队以及在 HOME 按钮上想到这种情况的人。它多次拯救了我的发展。如果 HOME 按钮在您的应用程序中不起作用,我建议您应该考虑并考虑最坏的情况;例如,应用无法正常运行,HOME被禁用,那么如何返回HOME屏幕,如何切换到其他应用?...
TGMCians 提供的代码不适用于 4.0+。
如果您正在开发 Android 框架,例如构建 ROM,为制造商构建框架,... grep 源代码KEY_HOME
并跟踪内部深度以了解其工作原理并禁用它。
TGMCians 是对的。
Android 不会让 Activity 及其服务在您的设备上完全单独运行。
当您的活动处于前台时,使用 Override 您可以捕获按钮点击(主页、返回和菜单)。如果活动/服务从后台完全控制,您也无法切换传入的短信、电子邮件、电话等。
我个人认为同时覆盖主页和返回按钮是危险的,如果活动在某个时候挂起,除非你重新启动手机,否则你无法退出应用程序。
就个人而言,我确实覆盖了退出键或返回主屏幕事件,但不理会主页按钮。