我正在显示来自我的应用程序的通知,并且该通知中有一个操作,当用户单击该操作时,将使用我设置的 Intent 调用相应的操作类。现在,我想执行特定操作,但在此之前,如果屏幕受引脚/图案保护,则用户需要解锁屏幕。我无法要求用户解锁设备,即在锁定屏幕上打开解锁键盘/图案。下面是我的代码, //HandleAction is a java class that extends IntentService Intent intent = new Intent(context, HandleAction.class); intent.putExtra(key, "my_value"); //Used to send information to action class PendingIntent pi = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder notification = new NotificationCompat.Builder(mContext); //set the title, icon etc for builder and add action as below notification.addAction(icon, "my_label", pi);当用户点击通知操作时,我在 MyAction.java 中获得对 onHandleIntent 的控制在这里,我想请求用户在受密码保护的情况下解锁设备,然后执行操作。如何在 onHandleIntent 中请求用户解锁设备?我发现使用 KeyguardManager 和 KeyguardLock 来实现这一点,但 keyguardManager.newKeyguardLock 是不推荐使用的方法,我想避免这种情况。所以,接下来是使用“FLAG_TURN_SCREEN_ON”和“FLAG_KEEP_SCREEN_ON”,但我无法弄清楚如何在这种情况下使用它们。我没有从我的操作类中启动任何窗口,它只是一个类似于增加我的计数器的操作。单击它后,通知应该消失,执行我的操作,就是这样。我发现了一个类似的问题 Unlock phone ,但它的做法是启动一个虚拟/空 Activity 。在此先感谢您的任何帮助和建议:) 最佳答案 在您打开的 Activity 中(即在锁定屏幕后面),您应该告诉系统解除键盘锁(例如在 onCreate() 中)对于 API >= 26KeyguardManager km = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);km.requestDismissKeyguard(this, null); // you may add callback listener here对于 API getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);如果设备没有安全锁定,它会立即解锁,如果它被锁定,它会要求用户解锁。