android - 我如何在锁定屏幕上显示对话框,如 viber 或 Line messenger

标签 android dialog wakelock screen-lock

我需要显示一个对话框,无论用户屏幕处于锁定状态还是处于深度 sleep 状态,该对话框都会显示。我目前的情况是:

  1. Broadcast receiver 启动Service并获取WakeLock

    电源管理器 mgr=(PowerManager)context.getSystemService(Context.POWER_SERVICE); lockStatic=mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, LOCK_NAME_STATIC);

  2. Service 使用以下设置启动 Activity

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

  3. Activity 启动一个 DialogFragment

问题是如果屏幕被锁定或处于 sleep 状态,对话框不会出现。即使屏幕关闭或锁定,Viber 应用程序和 Line Messenger 应用程序中的消息对话框也会弹出。他们是怎么做到的?

编辑

好吧,我发现当 Activity 主题设置为 Theme.Holo.Light.NoActionBar.Fullscreen 或任何 FULLSCREEN 主题时,它会起作用。 :)

最佳答案

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 

在我将 Activity 主题更改为

后,这些标志对我有用
Theme.Holo.Light.NoActionBar.Fullscreen

关于android - 我如何在锁定屏幕上显示对话框,如 viber 或 Line messenger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616514/

相关文章:

android - 使用 Canvas 在游戏中显示对话框

android - 卡住部分唤醒锁 - AudioMix

android - 我应该在 IntentService 中使用 WakeLock 吗?

android - 如何使用 C 中的 execlp native 函数打开浏览器

android - 如何使用 Mockito.mockStatic 在 kotlin android 中模拟静态方法

Android 从一个对话框中显示另一个对话框

javascript - JQUERY 使用一个对话框打开带有相应按钮的表单

ios - ios中是否有任何类型的部分唤醒锁定机制?

android - 如何在微调器中按字母顺序对数据进行排序

android - 使用 "Background Service"在 android 中控制屏幕亮度