diff --git a/res/values/strings.xml b/res/values/strings.xml
index 402f5263e51..2b21dac9209 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1225,6 +1225,10 @@
Use device screen lock
Face & Fingerprint Unlock
+
+ Fingerprint Unlock
+
+ Face Unlock
Tap to set up
diff --git a/src/com/android/settings/privatespace/onelock/PrivateSpaceFacePreferenceController.java b/src/com/android/settings/privatespace/onelock/PrivateSpaceFacePreferenceController.java
index cc22b87a0ec..2a5ff885dfd 100644
--- a/src/com/android/settings/privatespace/onelock/PrivateSpaceFacePreferenceController.java
+++ b/src/com/android/settings/privatespace/onelock/PrivateSpaceFacePreferenceController.java
@@ -20,8 +20,13 @@ import android.content.Context;
import android.os.UserHandle;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.biometrics.combination.BiometricFaceStatusPreferenceController;
import com.android.settings.privatespace.PrivateSpaceMaintainer;
@@ -62,4 +67,25 @@ public class PrivateSpaceFacePreferenceController extends BiometricFaceStatusPre
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
+
+ @Override
+ public void updateState(@NonNull Preference preference) {
+ if (mLockPatternUtils.isSeparateProfileChallengeEnabled(getUserId())) {
+ super.updateState(preference);
+ preference.setEnabled(true);
+ } else {
+ preference.setSummary(
+ mContext.getString(R.string.lock_settings_profile_unified_summary));
+ preference.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ Preference preference = screen.findPreference(getPreferenceKey());
+ if (!Utils.isMultipleBiometricsSupported(mContext)) {
+ preference.setTitle(R.string.private_space_face_title);
+ }
+ }
}
diff --git a/src/com/android/settings/privatespace/onelock/PrivateSpaceFingerprintPreferenceController.java b/src/com/android/settings/privatespace/onelock/PrivateSpaceFingerprintPreferenceController.java
index f2f08017421..b6c44574fc4 100644
--- a/src/com/android/settings/privatespace/onelock/PrivateSpaceFingerprintPreferenceController.java
+++ b/src/com/android/settings/privatespace/onelock/PrivateSpaceFingerprintPreferenceController.java
@@ -20,8 +20,13 @@ import android.content.Context;
import android.os.UserHandle;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.biometrics.combination.BiometricFingerprintStatusPreferenceController;
import com.android.settings.privatespace.PrivateSpaceMaintainer;
@@ -64,4 +69,25 @@ public class PrivateSpaceFingerprintPreferenceController
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
+
+ @Override
+ public void updateState(@NonNull Preference preference) {
+ if (mLockPatternUtils.isSeparateProfileChallengeEnabled(getUserId())) {
+ super.updateState(preference);
+ preference.setEnabled(true);
+ } else {
+ preference.setSummary(
+ mContext.getString(R.string.lock_settings_profile_unified_summary));
+ preference.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ Preference preference = screen.findPreference(getPreferenceKey());
+ if (!Utils.isMultipleBiometricsSupported(mContext)) {
+ preference.setTitle(R.string.private_space_fingerprint_title);
+ }
+ }
}
diff --git a/src/com/android/settings/privatespace/onelock/UseOneLockSettingsFragment.java b/src/com/android/settings/privatespace/onelock/UseOneLockSettingsFragment.java
index 6af6c38174f..413e02a16f8 100644
--- a/src/com/android/settings/privatespace/onelock/UseOneLockSettingsFragment.java
+++ b/src/com/android/settings/privatespace/onelock/UseOneLockSettingsFragment.java
@@ -24,6 +24,7 @@ import android.os.Bundle;
import androidx.annotation.Nullable;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.privatespace.PrivateSpaceMaintainer;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -71,7 +72,17 @@ public class UseOneLockSettingsFragment extends DashboardFragment {
final List controllers = new ArrayList<>();
controllers.add(new UseOneLockControllerSwitch(context, this));
controllers.add(new PrivateSpaceLockController(context, this));
- controllers.add(new FaceFingerprintUnlockController(context, getSettingsLifecycle()));
+ if (Utils.isMultipleBiometricsSupported(context)) {
+ controllers.add(new FaceFingerprintUnlockController(context, getSettingsLifecycle()));
+ } else if (Utils.hasFingerprintHardware(context)) {
+ controllers.add(
+ new PrivateSpaceFingerprintPreferenceController(
+ context, "private_space_biometrics", getSettingsLifecycle()));
+ } else if (Utils.hasFaceHardware(context)) {
+ controllers.add(
+ new PrivateSpaceFacePreferenceController(
+ context, "private_space_biometrics", getSettingsLifecycle()));
+ }
return controllers;
}