4

我有一个夜间时钟应用程序,我想在应用程序运行并且设备在充电器上时禁用设备的键盘保护。这个想法是,如果你在充电器上并且这个应用程序正在运行,那么假设你在一个安全的位置是合理的。当应用程序退出(通过返回或主页)时,我不希望出现解锁屏幕,只允许正常使用,就好像手机从未空闲超过设备的锁定时间一样。

目前我的应用程序使用 FLAG_SHOW_WHEN_LOCKED 窗口选项,它可以很好地保持屏幕开启和解锁,但是当我回击或回家时(锁定时间到期后),我得到解锁键盘屏幕来解锁设备。我想防止在我的应用程序正在运行并且设备在充电器上时发生这种锁定其他应用程序的情况。我显然会将这个功能设置为用户选择的设置,但是如何实现呢?

任何人都可以帮我解决这个问题 - 我所有的谷歌搜索工作都指向只让我的应用程序不被锁定,但我已经解决了这个问题。

谢谢。

4

2 回答 2

0

首先创建一个意图过滤器并监听充电器事件

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

在听众中

// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                     status == BatteryManager.BATTERY_STATUS_FULL;

if(isCharging) {
//disable keyguard
}

在你的 onPause()

启用键盘保护

于 2012-10-11T00:56:42.833 回答
0

非系统应用程序无法禁用键盘保护。你能做的最好的就是让你的应用成为设备管理员并增加锁定时间。但是,这对于时钟应用程序可能会被视为可疑。此外,一旦用户退出您的应用程序,您通常无法控制其他应用程序或系统发生的情况,这就是 Android 的工作方式。我明白为什么在您按下主页键后设备突然被锁定可能会感觉不自然,但我认为您对此无能为力。

于 2012-10-11T06:40:54.687 回答