【发布时间】:2015-07-11 18:33:32
【问题描述】:
我有Activity1,这是一个项目列表屏幕。每个项目都可以在单独的Activity2 中查看,该Activity2 显示为弹出窗口。 Activity1 可以从后台启动并在屏幕锁定时显示。 Activity1 也可以选择通过启动Activity2 在列表屏幕中自动显示项目的内容。我们可以绕过锁定屏幕,因为这两个活动都在OnCreate 方法中启用了WindowManagerFlags.DismissKeyguard。
在 Android Lollipop 之前,一切都按预期工作。但现在弹出Activity2 不可见,除非手动解锁设备。如果我将Activity2 更改为全屏Activity,那么一切似乎都正常(除了从一个活动转换到另一个活动将短暂显示锁定屏幕)。有关如何干净地解决此问题的任何想法?
另外,我只试用过配备此新 Knox 安全功能的 Galaxy S6/S6 Edge 设备。
编辑我已将Activity2 更改为DialogFragment,而不是Activity。这对我最有效,因为建议的答案使用了已弃用或过时的代码,具体取决于目标 sdk。 Activity1 正在使用以下标志在需要时绕过锁定屏幕。
getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
由于Activity2 现在只是一个DialogFragment,它使用父Activity1 的窗口标志。我还删除了 "android.intent.action.SCREEN_OFF" 操作上的这些标志,以便活动仅在作为通知启动时绕过锁定屏幕,而不是每次活动位于顶部时堆。答案中提到的权限是必需的。
【问题讨论】:
-
我最终不得不使用 DialogFragment 来代替弹出活动。这导致了一大堆其他问题和代码重组,但至少我可以解决这些问题。
-
您好,请问您是如何让 Activity1 显示在锁屏上的?
标签: android android-activity popup android-5.0-lollipop lockscreen