KeyguardManager - requestDismissKeyguard() 方法在 API 25 及以下版本中的替代方法[Android]

10

最近我在尝试从我的应用程序中手动请求用户解除键盘保护。当设备被锁定时,我的应用程序会调用一个活动屏幕,并且该屏幕具有以下标志:

FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON

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

requestDismissKeyguard() 方法仅适用于API26及以上版本,有没有更低版本的替代方法?


如果你们正在给一个程序投反对票,请添加评论。 - Shangeeth Sivan
4
没搞清楚为什么会有负评,给你加1个赞,朋友。 - 2Dee
3个回答

2

您可以在较低版本中使用标志。

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

0
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) {
  val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
  keyguardManager.requestDismissKeyguard(this, null)
} else {
  window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
}

查看更多示例在这里


-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();
       }
    }
}

createConfirmDeviceCredentialIntent 仅用于检查用户是否已通过验证,如果密码正确,它不会解锁手机。 - Rushikant Pawar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接