我需要显示一个对话框,无论用户屏幕处于锁定状态还是处于深度 sleep 状态,该对话框都会显示。我目前的情况是:
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);
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);
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/