From c3fae47144f957933bd4d3442eb9c1bbdde8f637 Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Sat, 25 Feb 2023 14:26:15 +0000 Subject: [PATCH] (2/2) Fix No clear steps for "re-enroll face unlock When the user has face id registered but failed enrolling in device lock state, lead users directly to the confirm deletion dialog in Face Unlock settings. - When receiving a face id re-enroll extra intent data, lead users directly to the confirm deletion dialog in Face Unlock settings. Bug: 233069240 Test: manually force enrolling face id fail, then doing test steps: 1. Receive notification that face unlock needs to be re-enrolled 2. Tap it then entering device 3. Check if showing the confirm deletion dialog in Face Unlock settings. Change-Id: I4eb09cf4a7d92a1dd9866c5c8b938aeb8c7eddf5 --- .../settings/biometrics/face/FaceSettings.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index 5dc3ee2f32d..bc9e8e2cd60 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -33,6 +33,7 @@ import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; +import android.widget.Button; import androidx.preference.Preference; @@ -47,6 +48,7 @@ import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; +import com.android.settingslib.widget.LayoutPreference; import java.util.ArrayList; import java.util.Arrays; @@ -60,6 +62,7 @@ public class FaceSettings extends DashboardFragment { private static final String TAG = "FaceSettings"; private static final String KEY_TOKEN = "hw_auth_token"; + private static final String KEY_RE_ENROLL_FACE = "re_enroll_face_unlock"; private static final String PREF_KEY_DELETE_FACE_DATA = "security_settings_face_delete_faces_container"; @@ -211,6 +214,20 @@ public class FaceSettings extends DashboardFragment { final boolean hasEnrolled = mFaceManager.hasEnrolledTemplates(mUserId); mEnrollButton.setVisible(!hasEnrolled); mRemoveButton.setVisible(hasEnrolled); + + // When the user has face id registered but failed enrolling in device lock state, + // lead users directly to the confirm deletion dialog in Face Unlock settings. + if (hasEnrolled) { + final boolean isReEnrollFaceUnlock = getIntent().getBooleanExtra( + FaceSettings.KEY_RE_ENROLL_FACE, false); + if (isReEnrollFaceUnlock) { + final Button removeBtn = ((LayoutPreference) mRemoveButton).findViewById( + R.id.security_settings_face_settings_remove_button); + if (removeBtn != null && removeBtn.isEnabled()) { + mRemoveController.onClick(removeBtn); + } + } + } } @Override