Stay in face settings unless the user explicitly backs out
Bug: 130898604 Test: Builds Change-Id: I7159c3a6259d298f78b8328b2c6974ba46fb56f9
This commit is contained in:
@@ -31,6 +31,8 @@ import android.os.UserManager;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.Utils;
|
||||
@@ -60,12 +62,23 @@ public class FaceSettings extends DashboardFragment {
|
||||
private byte[] mToken;
|
||||
private FaceSettingsAttentionPreferenceController mAttentionController;
|
||||
private FaceSettingsRemoveButtonPreferenceController mRemoveController;
|
||||
private FaceSettingsEnrollButtonPreferenceController mEnrollController;
|
||||
private List<AbstractPreferenceController> mControllers;
|
||||
|
||||
private List<Preference> mTogglePreferences;
|
||||
private Preference mRemoveButton;
|
||||
private Preference mEnrollButton;
|
||||
|
||||
private final FaceSettingsRemoveButtonPreferenceController.Listener mRemovalListener = () -> {
|
||||
if (getActivity() != null) {
|
||||
getActivity().finish();
|
||||
|
||||
// Disable the toggles until the user re-enrolls
|
||||
for (Preference preference : mTogglePreferences) {
|
||||
preference.setEnabled(false);
|
||||
}
|
||||
|
||||
// Hide the "remove" button and show the "set up face authentication" button.
|
||||
mRemoveButton.setVisible(false);
|
||||
mEnrollButton.setVisible(true);
|
||||
};
|
||||
|
||||
public static boolean isAvailable(Context context) {
|
||||
@@ -103,10 +116,22 @@ public class FaceSettings extends DashboardFragment {
|
||||
mUserId = getActivity().getIntent().getIntExtra(
|
||||
Intent.EXTRA_USER_ID, UserHandle.myUserId());
|
||||
|
||||
Preference keyguardPref = findPreference(FaceSettingsKeyguardPreferenceController.KEY);
|
||||
Preference appPref = findPreference(FaceSettingsAppPreferenceController.KEY);
|
||||
Preference attentionPref = findPreference(FaceSettingsAttentionPreferenceController.KEY);
|
||||
Preference confirmPref = findPreference(FaceSettingsConfirmPreferenceController.KEY);
|
||||
mTogglePreferences = new ArrayList<>(
|
||||
Arrays.asList(keyguardPref, appPref, attentionPref, confirmPref));
|
||||
|
||||
mRemoveButton = findPreference(FaceSettingsRemoveButtonPreferenceController.KEY);
|
||||
mEnrollButton = findPreference(FaceSettingsEnrollButtonPreferenceController.KEY);
|
||||
|
||||
// There is no better way to do this :/
|
||||
for (AbstractPreferenceController controller : mControllers) {
|
||||
if (controller instanceof FaceSettingsPreferenceController) {
|
||||
((FaceSettingsPreferenceController) controller).setUserId(mUserId);
|
||||
} else if (controller instanceof FaceSettingsEnrollButtonPreferenceController) {
|
||||
((FaceSettingsEnrollButtonPreferenceController) controller).setUserId(mUserId);
|
||||
}
|
||||
}
|
||||
mRemoveController.setUserId(mUserId);
|
||||
@@ -137,7 +162,12 @@ public class FaceSettings extends DashboardFragment {
|
||||
super.onResume();
|
||||
if (mToken != null) {
|
||||
mAttentionController.setToken(mToken);
|
||||
mEnrollController.setToken(mToken);
|
||||
}
|
||||
|
||||
final boolean hasEnrolled = mFaceManager.hasEnrolledTemplates(mUserId);
|
||||
mEnrollButton.setVisible(!hasEnrolled);
|
||||
mRemoveButton.setVisible(hasEnrolled);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -152,6 +182,7 @@ public class FaceSettings extends DashboardFragment {
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
|
||||
if (mToken != null) {
|
||||
mAttentionController.setToken(mToken);
|
||||
mEnrollController.setToken(mToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -188,6 +219,9 @@ public class FaceSettings extends DashboardFragment {
|
||||
mRemoveController = (FaceSettingsRemoveButtonPreferenceController) controller;
|
||||
mRemoveController.setListener(mRemovalListener);
|
||||
mRemoveController.setActivity((SettingsActivity) getActivity());
|
||||
} else if (controller instanceof FaceSettingsEnrollButtonPreferenceController) {
|
||||
mEnrollController = (FaceSettingsEnrollButtonPreferenceController) controller;
|
||||
mEnrollController.setActivity((SettingsActivity) getActivity());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,6 +238,7 @@ public class FaceSettings extends DashboardFragment {
|
||||
controllers.add(new FaceSettingsRemoveButtonPreferenceController(context));
|
||||
controllers.add(new FaceSettingsFooterPreferenceController(context));
|
||||
controllers.add(new FaceSettingsConfirmPreferenceController(context));
|
||||
controllers.add(new FaceSettingsEnrollButtonPreferenceController(context));
|
||||
return controllers;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user