以编程方式解锁屏幕

San*_*nto 10 android unlock android-intent keyguard android-powermanager

我有一个分享按钮GCM notification.点击分享按钮,我需要启动分享意图.一切都很完美.我面临的唯一问题是Lollipop锁屏功能.当我从锁定屏幕单击共享按钮时,我的意图对话框出现在锁定屏幕下方,用户必须解锁屏幕才能看到对话框.单击共享按钮时,我想以编程方式解锁屏幕.

我尝试使用Power Manager,但是它的所有wakeClock标志都已弃用并且WindowManager.LayoutParams.Flag_KEEP_SCREEN_ON建议使用.但我不是在这里使用活动.我正在使用broadcastReciever context.因此我不能使用getWindow()方法.

我也尝试过KeyguardManager.但即便disableKeyguard()被解除了.

Intent.ACTION_SCREEN_ON如果我们想在屏幕解锁后执行任何操作,我不能使用,因为这应该使用.

我曾使用以下意图以编程方式关闭通知托盘:

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        mContext.sendBroadcast(it);
Run Code Online (Sandbox Code Playgroud)

是否有类似的意图,可以广播解锁屏幕

使用DevicePolicyManager更新了代码:

public static void handleShareBtnClick(Context context, String message) {
    GcmHelper helper = new GcmHelper();
    helper.shareMessage(context, message);
    if(Utility.isLollypopAndAbove()){
          helper.unlockLockScreen();
    }
    helper.launchShareforForAlert();

}



   public void unlockLockScreen(){
        DevicePolicyManager devicePolicyMngr= (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
        ComponentName compName=new ComponentName(mContext, DeviceAdminReceiver.class);
        if(!devicePolicyMngr.isAdminActive(compName))
            devicePolicyMngr.removeActiveAdmin(compName);
    }
Run Code Online (Sandbox Code Playgroud)

即使在使用DevicePolicyManager之后,它也无法解锁我的屏幕

小智 6

Step 1: Add below code in your activity before
setContentView(R.layout.example);

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

Step 2: Lock your mobile than you will see activity in which you have added this code.
This will work even though your mobile is locked with pattern lock. This will work like a charm. 
Run Code Online (Sandbox Code Playgroud)