Android 锁屏状态下拉起某个页面


解释一个flag:
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
类似用户点击屏幕点亮。

注意:这个flag 在屏幕锁屏熄屏状态下处理拉起页面会引起出现白屏的问题:
当屏幕已点亮,但是现在是锁屏状态下,如果添加:

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

这个是屏幕锁屏,熄屏状态下调用此flags 会直接显示该页面并置于锁屏页面之上。

解决办法:

获取到当前的屏幕是否是点亮状态,然后点亮时不添加
该flag:

WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
  PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn = powerManager.isScreenOn();
        if (isScreenOn) {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        } else {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        }

最后:
在生命周期结束的时候注意要清空flags。

你可能感兴趣的:(Android)