Files
app_Settings/src/com/android/settings/biometrics/combination/CombinedBiometricSettings.java
Derek Jedral 5a75cd54d4 Change preference title if Active Unlock enabled
Change the title of the preference to reflect that Active Unlock can
also be used to unlock the device.

Test: make RunSettingsRoboTests
Bug: b/271782800
Change-Id: Ie227e6dddfc024235fc3568899ef151f14f17696
2023-05-03 12:37:01 -07:00

180 lines
6.9 KiB
Java

/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.biometrics.combination;
import static com.android.settings.biometrics.activeunlock.ActiveUnlockStatusPreferenceController.KEY_ACTIVE_UNLOCK_SETTINGS;
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.biometrics.activeunlock.ActiveUnlockContentListener.OnContentChangedListener;
import com.android.settings.biometrics.activeunlock.ActiveUnlockDeviceNameListener;
import com.android.settings.biometrics.activeunlock.ActiveUnlockRequireBiometricSetup;
import com.android.settings.biometrics.activeunlock.ActiveUnlockStatusUtils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
/**
* Settings screen for multiple biometrics.
*/
@SearchIndexable
public class CombinedBiometricSettings extends BiometricsSettingsBase {
private static final String TAG = "BiometricSettings";
private static final String KEY_FACE_SETTINGS = "biometric_face_settings";
private static final String KEY_FINGERPRINT_SETTINGS = "biometric_fingerprint_settings";
private static final String KEY_UNLOCK_PHONE = "biometric_settings_biometric_keyguard";
private static final String KEY_USE_IN_APPS = "biometric_settings_biometric_app";
private static final String KEY_INTRO_PREFERENCE = "biometric_intro";
private static final String KEY_USE_BIOMETRIC_PREFERENCE = "biometric_ways_to_use";
private ActiveUnlockStatusUtils mActiveUnlockStatusUtils;
private CombinedBiometricStatusUtils mCombinedBiometricStatusUtils;
@Nullable private ActiveUnlockDeviceNameListener mActiveUnlockDeviceNameListener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
use(BiometricSettingsKeyguardPreferenceController.class).setUserId(mUserId);
use(BiometricSettingsAppPreferenceController.class).setUserId(mUserId);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActiveUnlockStatusUtils = new ActiveUnlockStatusUtils(getActivity());
mCombinedBiometricStatusUtils = new CombinedBiometricStatusUtils(getActivity(), mUserId);
if (mActiveUnlockStatusUtils.isAvailable()) {
updateUiForActiveUnlock();
}
}
private void updateUiForActiveUnlock() {
OnContentChangedListener listener = new OnContentChangedListener() {
@Override
public void onContentChanged(String newValue) {
updateUnlockPhonePreferenceSummary();
}
};
mActiveUnlockDeviceNameListener =
new ActiveUnlockDeviceNameListener(getActivity(), listener);
mActiveUnlockDeviceNameListener.subscribe();
final Preference introPreference = findPreference(KEY_INTRO_PREFERENCE);
if (introPreference != null) {
introPreference.setTitle(mActiveUnlockStatusUtils.getIntroForActiveUnlock());
}
final Preference useBiometricPreference = findPreference(KEY_USE_BIOMETRIC_PREFERENCE);
if (useBiometricPreference != null) {
useBiometricPreference.setTitle(
mActiveUnlockStatusUtils.getUseBiometricTitleForActiveUnlock());
}
getActivity().setTitle(mActiveUnlockStatusUtils.getTitleForActiveUnlock());
}
@Override
public void onDestroy() {
if (mActiveUnlockDeviceNameListener != null) {
mActiveUnlockDeviceNameListener.unsubscribe();
}
super.onDestroy();
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.security_settings_combined_biometric;
}
@Override
public String getFacePreferenceKey() {
return KEY_FACE_SETTINGS;
}
@Override
public String getFingerprintPreferenceKey() {
return KEY_FINGERPRINT_SETTINGS;
}
@Override
public String getUnlockPhonePreferenceKey() {
return KEY_UNLOCK_PHONE;
}
@Override
public String getUseInAppsPreferenceKey() {
return KEY_USE_IN_APPS;
}
@Override
protected String getLogTag() {
return TAG;
}
@Override
public int getMetricsCategory() {
return SettingsEnums.COMBINED_BIOMETRIC;
}
@Override
protected boolean onRetryPreferenceTreeClick(Preference preference, final boolean retry) {
if (!mActiveUnlockStatusUtils.isAvailable()
|| !KEY_ACTIVE_UNLOCK_SETTINGS.equals(preference.getKey())) {
return super.onRetryPreferenceTreeClick(preference, retry);
}
mDoNotFinishActivity = true;
Intent intent;
if (mActiveUnlockStatusUtils.useBiometricFailureLayout()
&& mActiveUnlockDeviceNameListener != null
&& !mActiveUnlockDeviceNameListener.hasEnrolled()
&& !mCombinedBiometricStatusUtils.hasEnrolled()) {
intent = new Intent(getActivity(), ActiveUnlockRequireBiometricSetup.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
int userId = mUserId;
if (mUserId != UserHandle.USER_NULL) {
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
}
intent.putExtra(EXTRA_KEY_GK_PW_HANDLE, getGkPwHandle());
} else {
intent = mActiveUnlockStatusUtils.getIntent();
}
if (intent != null) {
startActivityForResult(intent, ACTIVE_UNLOCK_REQUEST);
}
return true;
}
@Override
protected String getUseAnyBiometricSummary() {
// either Active Unlock is not enabled or no device is enrolled.
if (mActiveUnlockDeviceNameListener == null
|| !mActiveUnlockDeviceNameListener.hasEnrolled()) {
return super.getUseAnyBiometricSummary();
}
return mActiveUnlockStatusUtils.getUnlockDeviceSummaryForActiveUnlock();
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new CombinedBiometricSearchIndexProvider(R.xml.security_settings_combined_biometric);
}