11

我在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);

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

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

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

4

1 回答 1

8

第 1 步:在您的活动中添加以下代码之前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);

第 2 步:锁定您的手机,然后您将看到添加此代码的活动。即使您的手机被模式锁锁定,这也将起作用。这将像一个魅力。

于 2017-04-26T05:44:01.777 回答