即使屏幕被锁定,如何显示对话框?

Anc*_*tal 5 android dialog

我已经使用GCM实现了推送通知,当我收到通知时,我希望在我创建了自定义对话框的对话框中显示.

现在,我希望我的对话框出现,即使设备被锁定,无论是模式匹配还是PIN.

我做了以下尝试,但没有积极的结果.

public void onAttachedToWindow() {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    }
Run Code Online (Sandbox Code Playgroud)

并且

public void onAttachedToWindow() {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        }
Run Code Online (Sandbox Code Playgroud)

清单中的权限:

 <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
Run Code Online (Sandbox Code Playgroud)

并且还添加了

android:showOnLockScreen="true"
Run Code Online (Sandbox Code Playgroud)

对于屏幕锁定时我想要显示的活动.

请帮忙.

Ami*_*aei 1

您应该使用KeyGuardManager自动解锁设备,然后获取唤醒锁。

KeyguardManager kgm = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
boolean isKeyguardUp = kgm.inKeyguardRestrictedInputMode();
KeyguardLock kgl = kgm.newKeyguardLock("Your Activity/Service name");

if(isKeyguardUp){
kgl.disableKeyguard();
isKeyguardUp = false;
}

wl.acquire(); //use your wake lock once keyguard is down.
Run Code Online (Sandbox Code Playgroud)

您应该将此权限添加到清单中

<uses-permission android:name="android.permission.WAKE_LOCK"/>
Run Code Online (Sandbox Code Playgroud)

和这个

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
Run Code Online (Sandbox Code Playgroud)