【问题标题】:Android FLAG_SHOW_WHEN_LOCKED and Keyguard LockAndroid FLAG_SHOW_WHEN_LOCKED 和 Keyguard 锁
【发布时间】:2015-06-29 06:34:04
【问题描述】:

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

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

我并不想以任何方式替换或禁用键盘保护。该活动应该只显示有关设备的一些诊断信息,并且在用户关闭它之前应该保持活动状态。

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

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

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

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

【问题讨论】:

    标签: android keyguard


    【解决方案1】:

    试试下面的代码sn-ps,

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

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

    参考ACTION_CLOSE_SYSTEM_DIALOGS

    【讨论】:

    • 我试过了,没用。奇怪的是,当我没有连接电缆(不充电)时,一切正常。我什至可以滑动屏幕和状态栏区域,它可以很好地显示在全屏活动中而不会关闭它。
    • 原来和通知栏没有直接关系。经过更多测试后,我发现 LG 设备有一个设置:PC 连接 -> USB 连接 -> “连接时询问”。如果未选中此项,则一切正常,如果选中全屏活动将被解除。任何想法如何控制这个?
    猜你喜欢
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多