KeyguardManager - api 25 及以下的 requestDismissKeyguard() 方法替代 [Android]

Sha*_*van 7 android keyguard keyguardlock

我最近试图要求用户从我的应用程序中手动关闭键盘保护。当设备被锁定并且屏幕上有标志时,我的应用会调用一个活动屏幕

FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON

当我必须调用另一个没有这些标志的屏幕时,我想请求用户解锁键盘锁,这种行为可以在相机应用程序中看到 - 当我们想分享手机锁定时拍摄的照片时将要求我们解锁设备。

requestDismissKeyguard()方法仅适用于 api26 及以上的低 apis 的任何替代方案?

小智 -3

您可以在 API 级别 21 中使用 createConfirmDeviceCredentialIntent

https://developer.android.com/reference/android/app/KeyguardManager.html#createConfirmDeviceCredentialIntent(java.lang.CharSequence,%20java.lang.CharSequence)

样本:

//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();
       }
    }
}
Run Code Online (Sandbox Code Playgroud)