From 80ac68ca91664e14100d61a0e691066e5335eeaf Mon Sep 17 00:00:00 2001 From: Yanting Yang Date: Thu, 18 Jun 2020 17:12:58 +0800 Subject: [PATCH] According to the enrolled status to show/hide face unlock results In current design, we only check the hardware support for face unlock to show/hide the face unlock results in Settings Search. However the face settings page is not launchable when the user doesn't enroll the face unlock. It will cause user confused that face unlock results is no response when they click them. Therefore, it's more making sense to add enrolled status checking to index the face unlock results. Test: manual and robotests Fixes: 157954564 Change-Id: I5dd36e15fe48d537ee499c73cc172fc913b39554 --- .../settings/biometrics/face/FaceSettings.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index c1ee545fea3..a493ae01dc9 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -323,16 +323,18 @@ public class FaceSettings extends DashboardFragment { @Override protected boolean isPageSearchEnabled(Context context) { - return isAvailable(context); + if (isAvailable(context)) { + return hasEnrolledBiometrics(context); + } + + return false; } @Override public List getNonIndexableKeys(Context context) { final List keys = super.getNonIndexableKeys(context); if (isAvailable(context)) { - final FaceManager faceManager = context.getSystemService(FaceManager.class); - final boolean hasEnrolled = faceManager.hasEnrolledTemplates( - UserHandle.myUserId()); + final boolean hasEnrolled = hasEnrolledBiometrics(context); keys.add(hasEnrolled ? PREF_KEY_ENROLL_FACE_UNLOCK : PREF_KEY_DELETE_FACE_DATA); } @@ -353,5 +355,13 @@ public class FaceSettings extends DashboardFragment { } return isAttentionSupported; } + + private boolean hasEnrolledBiometrics(Context context) { + final FaceManager faceManager = Utils.getFaceManagerOrNull(context); + if (faceManager != null) { + return faceManager.hasEnrolledTemplates(UserHandle.myUserId()); + } + return false; + } }; }