Android FLAG_SHOW_WHEN_LOCKED和键盘锁

时间:2015-06-29 06:34:04

标签: android keyguard

我的应用程序有一个活动,当收到android.intent.action.BOOT_COMPLETED广播时,由BroadcastReceiver启动。

活动应全屏显示在Keyguard(安全)上。 Activity正在使用Theme.NoTitleBar.Fullscreen主题,在应用程序清单中设置,WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED将Keyguard放在后面。

我不是试图以任何方式替换或禁用键盘锁。该活动应该只显示有关设备的一些诊断信息,它应该保持活动状态,直到用户关闭它。

因此,设备启动,通常会出现键盘锁,并且还会启动几秒钟后的活动。在没有标题栏的全屏模式下,活动很好地显示在键盘锁上。所有这些在我的索尼和三星测试设备上运行良好。

今天我在LG G2设备上测试应用程序(Android 4.4.2)并发现了一个奇怪的问题。问题是全屏活动被解除(暂停)并且键盘再次被启动。

我花了半天时间浏览代码并试图找出导致此行为的原因。最后我注意到,每当系统通知显示在标题栏中时,我的活动就会被取消。在我的情况下,通知是“电池已满”和“拔下电池节电”。我没有机会测试,但其他通知可能会发生同样的情况。

有没有办法抑制系统通知或忽略,因此全屏活动不会暂停?

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码段,

  Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
  this.sendBroadcast(intent);

当用户操作请求暂时系统对话框关闭时,广播。临时系统对话框的一些示例是通知窗口阴影和最近的任务对话框

参考ACTION_CLOSE_SYSTEM_DIALOGS