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; }