Update face & fingerprint pref logic

This change makes it possible for face & fingerprint settings to be
presented to the user only to delete their face/fingerprint if the
feature has been disabled by a device admin.

Bug: 323280069
Test: atest BiometricFaceStatusPreferenceControllerTest
BiometricFingerprintStatusPreferenceControllerTest

Change-Id: I62cab3ddf7cf708d1b0b4da61dc3ffb7052dee84
This commit is contained in:
Joshua McCloskey
2024-04-29 22:22:31 +00:00
parent 1eca5e767d
commit 3e25356829
18 changed files with 213 additions and 13 deletions

View File

@@ -36,6 +36,7 @@ import android.util.Log;
import android.widget.Button;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
@@ -46,6 +47,7 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.LayoutPreference;
@@ -68,6 +70,8 @@ public class FaceSettings extends DashboardFragment {
"security_settings_face_delete_faces_container";
private static final String PREF_KEY_ENROLL_FACE_UNLOCK =
"security_settings_face_enroll_faces_container";
public static final String SECURITY_SETTINGS_FACE_MANAGE_CATEGORY =
"security_settings_face_manage_category";
private UserManager mUserManager;
private FaceManager mFaceManager;
@@ -175,6 +179,8 @@ public class FaceSettings extends DashboardFragment {
: use(FaceSettingsLockscreenBypassPreferenceController.class);
mLockscreenController.setUserId(mUserId);
final PreferenceCategory managePref =
findPreference(SECURITY_SETTINGS_FACE_MANAGE_CATEGORY);
Preference keyguardPref = findPreference(FaceSettingsKeyguardPreferenceController.KEY);
Preference appPref = findPreference(FaceSettingsAppPreferenceController.KEY);
Preference attentionPref = findPreference(FaceSettingsAttentionPreferenceController.KEY);
@@ -184,6 +190,14 @@ public class FaceSettings extends DashboardFragment {
mTogglePreferences = new ArrayList<>(
Arrays.asList(keyguardPref, appPref, attentionPref, confirmPref, bypassPref));
if (RestrictedLockUtilsInternal.checkIfKeyguardFeaturesDisabled(
getContext(), DevicePolicyManager.KEYGUARD_DISABLE_FACE, mUserId) != null) {
managePref.setTitle(getString(
com.android.settingslib.widget.restricted.R.string.disabled_by_admin));
} else {
managePref.setTitle(R.string.security_settings_face_settings_preferences_category);
}
mRemoveButton = findPreference(FaceSettingsRemoveButtonPreferenceController.KEY);
mEnrollButton = findPreference(FaceSettingsEnrollButtonPreferenceController.KEY);