我正在尝试在锁定屏幕上显示DialogFragment。
当用户通过新的键盘保护小部件功能触发操作时,就必须发生这种情况。

特别是显示了一个“时间选择器”对话框,但是用户只有在解锁屏幕后才能看到它。即使屏幕已锁定,我如何设法显示它?

我已经尝试了所有这些标志的组合,但是没有成功:

AlertDialog dialog = dBuilder.create();
    Window window = dialog.getWindow();

    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
            + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


这在onCreateView中调用。

谢谢你的支持!

最佳答案

对话框窗口不显示在锁定屏幕上,因为它们是浮动窗口,我无法为您提供Android为什么不显示它们的实际原因,但可能与绘制基础锁定屏幕组件有关,因为这些出于所有意图和目的,都是“安全组件”。

在解决了您的问题之前,我最终要做的是进行一个单独的活动,使用Activity.getWindow().setFlags()将上述窗口标志设置为“活动”的窗口,然后显示我的DialogFragment。它虽然不漂亮,但看起来似乎最正确的设置是在正确设置后可以可靠地工作。幸运的是,在UI方面,您可以将Activity的主题设置为Theme.Wallpaper.NoTitleBar,看起来不错。

10-07 19:14
查看更多