Stay in face settings unless the user explicitly backs out

Bug: 130898604

Test: Builds
Change-Id: I7159c3a6259d298f78b8328b2c6974ba46fb56f9
This commit is contained in:
Kevin Chyn
2019-04-23 13:41:31 -07:00
parent 5c2842c1c8
commit 0dfc2769cf
12 changed files with 226 additions and 11 deletions

View File

@@ -19,8 +19,11 @@ package com.android.settings.biometrics.face;
import static android.provider.Settings.Secure.FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION;
import android.content.Context;
import android.hardware.face.FaceManager;
import android.provider.Settings;
import androidx.preference.Preference;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -28,12 +31,14 @@ import com.android.settings.core.TogglePreferenceController;
*/
public class FaceSettingsConfirmPreferenceController extends FaceSettingsPreferenceController {
private static final String KEY = "security_settings_face_require_confirmation";
static final String KEY = "security_settings_face_require_confirmation";
private static final int ON = 1;
private static final int OFF = 0;
private static final int DEFAULT = OFF;
private FaceManager mFaceManager;
public FaceSettingsConfirmPreferenceController(Context context) {
this(context, KEY);
}
@@ -41,6 +46,7 @@ public class FaceSettingsConfirmPreferenceController extends FaceSettingsPrefere
public FaceSettingsConfirmPreferenceController(Context context,
String preferenceKey) {
super(context, preferenceKey);
mFaceManager = context.getSystemService(FaceManager.class);
}
@Override
@@ -55,6 +61,18 @@ public class FaceSettingsConfirmPreferenceController extends FaceSettingsPrefere
FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION, isChecked ? ON : OFF, getUserId());
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (!FaceSettings.isAvailable(mContext)) {
preference.setEnabled(false);
} else if (!mFaceManager.hasEnrolledTemplates(getUserId())) {
preference.setEnabled(false);
} else {
preference.setEnabled(true);
}
}
@Override
public int getAvailabilityStatus() {
return AVAILABLE;