即使屏幕被锁定,如何显示对话框? [英] How to show dialog even if the screen is locked?

查看:193
本文介绍了即使屏幕被锁定,如何显示对话框?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have implemented the push notification using GCM and when i receive the notification i want to show in a dialog for which i have created a custom dialog.

现在,即使设备已锁定模式匹配或PIN码,我希望我的对话框出现。

Now, i want my dialog to appear even if the device is locked whether a pattern match or PIN.

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

I have made following tries, but no positive result.

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);
    }

还有

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);
        }

清单中的权限:

 <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

,并添加了

android:showOnLockScreen="true"

为我想要的活动在屏幕锁定时显示。

for the activity to which i want to be shown when screen is locked.

请帮助。

推荐答案

参考链接
显示Android 2.3中的锁定屏幕上的触摸事件的对话框

当设备被锁定时,您不会显示对话框,而不将程序作为管理员特权应用程序绑定。

I do not think you can display dialog when device is locked without binding your application as admin privileged app programatically.

因此,您必须将应用程序与设备管理员绑定。您可以从 https://github.com/marakana/DevicePolicyDemo 下载设备管理员样本。

So you have to bind your application with Device administrator. You can download device administrator sample from https://github.com/marakana/DevicePolicyDemo.

通过

DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    ComponentName  demoDeviceAdmin = new ComponentName(context, DemoDeviceAdminReceiver.class);
    devicePolicyManager.setMaximumTimeToLock(demoDeviceAdmin, 0);

然后启动您可以在其中显示对话框的活动,在这个窗口中这样

then launch your activity in which you can display you dialog in onattach window like this

@Override
public void onAttachedToWindow() 
{
    super.onAttachedToWindow();

    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);
    new AlertDialog.Builder(this).setMessage("Dialog Displaying").setNeutralButton("OK", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();

        }
    }).show();
}

请让我知道是否有帮助。

Please let me know if it help.

这篇关于即使屏幕被锁定,如何显示对话框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆