我需要显示一个对话框,无论用户屏幕锁定还是深度睡眠,都会显示该对话框 . 我目前的情况是:
- Broadcast receiver 发起 Service 并获得WakeLock
PowerManager 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
问题是如果屏幕被锁定或处于睡眠状态,则不会出现对话框 . 即使屏幕关闭或锁定,Viber应用程序和Line Messenger应用程序中的消息对话框也会弹出 . 他们是怎么做到的?
Edit
我发现当活动主题设置为 Theme.Holo.Light.NoActionBar.Fullscreen 或任何FULLSCREEN主题时,它可以正常工作 . :)
2 回答
在我将Activity主题更改为之后,这些标志对我有效
您应该使用KeyGuardManage r自动解锁设备,然后获取唤醒锁定 .