Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to show dialog even if the screen is locked?

Tags:

android

dialog

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.

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

and also

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

permissions in manifest:

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

and also added the

android:showOnLockScreen="true"

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

Please help.

like image 685
Anchit Mittal Avatar asked Oct 02 '22 14:10

Anchit Mittal


1 Answers

As refer to link Show dialog with touch events over lockscreen in Android 2.3

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

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

After binding your application through Device administrator once you receive the push notification first unlock device by

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.

like image 135
Praween Kumar Mishra Avatar answered Nov 01 '22 14:11

Praween Kumar Mishra