Remove face/fignerprint search if not present

Test: Verified manually with a device that if face/fingerprint are not
present they do not show up.
Fixes: 350599580
Flag: EXEMPT bugfix

Change-Id: I6a691d2985e4839336e9c08dfa6c97abe23f43f2
This commit is contained in:
Joshua McCloskey
2024-07-24 16:19:33 +00:00
committed by Joshua Mccloskey
parent 441a202444
commit ed59922ca8
5 changed files with 77 additions and 1 deletions

View File

@@ -159,11 +159,27 @@ public class FingerprintSettings extends SubSettings {
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.security_settings_fingerprint) {
@Override
protected boolean isPageSearchEnabled(Context context) {
return super.isPageSearchEnabled(context) &&
hasEnrolledFingerprints(context);
}
@Override
public List<AbstractPreferenceController>
createPreferenceControllers(Context context) {
return createThePreferenceControllers(context);
}
private boolean hasEnrolledFingerprints(Context context) {
final FingerprintManager fingerprintManager =
Utils.getFingerprintManagerOrNull(context);
if (fingerprintManager != null) {
return fingerprintManager.hasEnrolledTemplates(UserHandle.myUserId());
}
return false;
}
};
private static List<AbstractPreferenceController> createThePreferenceControllers(Context

View File

@@ -15,10 +15,15 @@
*/
package com.android.settings.security;
import static com.android.settings.biometrics.face.FaceSettings.isFaceHardwareDetected;
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.isFingerprintHardwareDetected;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.biometrics.combination.CombinedBiometricStatusPreferenceController;
import com.android.settings.biometrics.face.FaceStatusPreferenceController;
@@ -45,6 +50,10 @@ public class SecuritySettings extends DashboardFragment {
public static final int CHANGE_TRUST_AGENT_SETTINGS = 126;
public static final int UNIFY_LOCK_CONFIRM_PROFILE_REQUEST = 129;
public static final int UNUNIFY_LOCK_CONFIRM_DEVICE_REQUEST = 130;
@VisibleForTesting
static final String KEY_FINGERPRINT_SETTINGS = "fingerprint_settings";
@VisibleForTesting
static final String KEY_FACE_SETTINGS = "face_settings";
@Override
public int getMetricsCategory() {
@@ -131,6 +140,18 @@ public class SecuritySettings extends DashboardFragment {
.hasAlternativeSecuritySettingsFragment()
&& !SafetyCenterManagerWrapper.get().isEnabled(context);
}
@Override
public List<String> getNonIndexableKeys(Context context) {
final List<String> keys = super.getNonIndexableKeys(context);
if (!isFingerprintHardwareDetected(context)) {
keys.add(KEY_FINGERPRINT_SETTINGS);
}
if (!isFaceHardwareDetected(context)) {
keys.add(KEY_FACE_SETTINGS);
}
return keys;
}
};
@Override