9

我正在开发锁定屏幕,我想在冰淇淋三明治和果冻豆中禁用主页按钮,我可以在 android 2.2、2.3 中使用以下方法阻止它

  @Override
public void onAttachedToWindow() {
    // TODO Auto-generate method stub
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();
}

也试过这个

   getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

在这里,我也没有通过onPauseMethod 或onKeyDown

但是这些方法在 ICS 中对我不起作用,果冻豆如果有任何方法可以替代它,请告诉我

4

3 回答 3

14

在 ICS 即 Android 4+ 之后,出于安全原因,已删除了 HomeButton 的覆盖,以便在应用程序被证明是恶意软件的情况下允许用户退出。

另外,不让用户离开应用程序并不是一个很好的做法。但是,由于您正在制作一个锁屏应用程序,您可以做的是将活动声明为Launcher,这样当按下 HomeButton 时,它会简单地重新启动您的应用程序并自行保持在那里(用户只会注意到轻微的闪烁在屏幕上)。

编辑#1:这是另一种解决方法,更适合您的需求。

编辑#2:刚刚遇到这个。没有测试过。但看起来有点前途无量。不确定它是否会起作用,但你可以试一试。

于 2012-09-24T16:03:02.170 回答
9

您可以尝试以下几件事:

  • 您可以设置活动单顶,并在onPause()调用方法时使用 clear to top 标志重新开始,这将阻止主页按钮并打开其他活动。

  • 收听 BOOT_COMPLETED 广播以开始您的活动 - 这将保护您免受将电池从设备中取出以重新启动设备的用户的影响。

  • 添加警报管理器,如果您的应用程序处于活动状态,它将每秒测试一次,如果不是,则启动它 - 这将保护您免受用户如何设法关闭您的应用程序(可能是使用外部工具)。

这样做,没有人能够退出您的应用程序。

于 2012-09-27T14:46:55.427 回答
1

我认为不可能从 Android 应用程序中检测和/或拦截 HOME 按钮。这是系统内置的,以防止无法退出的恶意应用程序。

于 2013-12-30T13:44:53.293 回答