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
This commit is contained in:
Yanting Yang
2020-06-18 17:12:58 +08:00
parent f9a021511e
commit 80ac68ca91

View File

@@ -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<String> getNonIndexableKeys(Context context) {
final List<String> 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;
}
};
}