我最近试图要求用户从我的应用程序中手动解除键盘保护。当设备被锁定并且屏幕有标志时,我的应用程序会调用活动屏幕
FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON
当我必须调用另一个没有这些标志的屏幕时,我想请求用户解锁键盘保护,这种行为可以在相机应用程序中看到 - 当我们想要分享手机锁定时拍摄的照片时将要求我们解锁设备。
requestDismissKeyguard()方法仅适用于 api26 及更高版本的任何较低 apis 的替代方案??
我最近试图要求用户从我的应用程序中手动解除键盘保护。当设备被锁定并且屏幕有标志时,我的应用程序会调用活动屏幕
FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON
当我必须调用另一个没有这些标志的屏幕时,我想请求用户解锁键盘保护,这种行为可以在相机应用程序中看到 - 当我们想要分享手机锁定时拍摄的照片时将要求我们解锁设备。
requestDismissKeyguard()方法仅适用于 api26 及更高版本的任何较低 apis 的替代方案??
您可以将标志用于较低版本
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);
您可以在 API 级别 21 中使用 createConfirmDeviceCredentialIntent
样本:
//region [in some funtion]
if (keyguardManager.isKeyguardLocked()) {
Intent intent = keyguardManager.createConfirmDeviceCredentialIntent("My Title", "A Custom Description");
if (intent != null) {
startActivityForResult(intent, REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS);
}else{
Toast.makeText(MainActivity.this, "Secure lock screen hasn't set up", Toast.LENGTH_SHORT).show();
}
}
//endregion
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS) {
if (resultCode == RESULT_OK) {
Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Cancel", Toast.LENGTH_SHORT).show();
}
}
}