Loading src/com/android/settings/biometrics/BiometricEnrollBase.java +13 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling; import com.android.settings.core.InstrumentedActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.activityembedding.ActivityEmbeddingUtils; import com.android.systemui.unfold.compat.ScreenSizeFoldProvider; import com.android.systemui.unfold.updates.FoldProvider; Loading Loading @@ -173,6 +174,14 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { mUserId = getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); mPostureGuidanceIntent = FeatureFactory.getFeatureFactory() .getFaceFeatureProvider().getPostureGuidanceIntent(getApplicationContext()); // Remove the existing split screen dialog. BiometricsSplitScreenDialog dialog = (BiometricsSplitScreenDialog) getSupportFragmentManager() .findFragmentByTag(BiometricsSplitScreenDialog.class.getName()); if (dialog != null) { getSupportFragmentManager().beginTransaction().remove(dialog).commit(); } } @Override Loading Loading @@ -338,4 +347,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { final ColorStateList stateList = Utils.getColorAttr(this, android.R.attr.windowBackground); return stateList != null ? stateList.getDefaultColor() : Color.TRANSPARENT; } protected boolean shouldShowSplitScreenDialog() { return isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded(this); } } src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +13 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,12 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (shouldShowSplitScreenDialog()) { BiometricsSplitScreenDialog .newInstance(getModality(), !WizardManagerHelper.isAnySetupWizard(getIntent())) .show(getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); } if (savedInstanceState != null) { mConfirmingCredentials = savedInstanceState.getBoolean(KEY_CONFIRMING_CREDENTIALS); mHasScrolledToBottom = savedInstanceState.getBoolean(KEY_SCROLLED_TO_BOTTOM); Loading Loading @@ -293,6 +299,13 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase @Override protected void onNextButtonClick(View view) { // If it's not on suw, this method shouldn't be accessed. if (shouldShowSplitScreenDialog() && WizardManagerHelper.isAnySetupWizard(getIntent())) { BiometricsSplitScreenDialog.newInstance(getModality(), false /*destroyActivity*/) .show(getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); return; } mNextClicked = true; if (checkMaxEnrolled() == 0) { // Lock thingy is already set up, launch directly to the next page Loading src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java +8 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,14 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase } public void startEnrollment() { // If it's in multi window mode, dialog is shown, do not start enrollment. if (shouldShowSplitScreenDialog()) { return; } startEnrollmentInternal(); } protected void startEnrollmentInternal() { mSidecar = (BiometricEnrollSidecar) getSupportFragmentManager() .findFragmentByTag(TAG_SIDECAR); if (mSidecar == null) { Loading src/com/android/settings/biometrics/BiometricsSplitScreenDialog.java +22 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.settings.biometrics; import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_SKIP; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.DialogInterface; Loading @@ -34,23 +36,33 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; */ public class BiometricsSplitScreenDialog extends InstrumentedDialogFragment { private static final String KEY_BIOMETRICS_MODALITY = "biometrics_modality"; private static final String KEU_DESTROY_ACTIVITY = "destroy_activity"; @BiometricAuthenticator.Modality private int mBiometricsModality; private boolean mDestroyActivity; /** Returns the new instance of the class */ /** * Returns the new instance of the class * @param biometricsModality Biometric modality. * @param destroyActivity Whether to destroy the activity * @return the current {@link BiometricsSplitScreenDialog} */ public static BiometricsSplitScreenDialog newInstance( @BiometricAuthenticator.Modality int biometricsModality) { @BiometricAuthenticator.Modality int biometricsModality, boolean destroyActivity) { final BiometricsSplitScreenDialog dialog = new BiometricsSplitScreenDialog(); final Bundle args = new Bundle(); args.putInt(KEY_BIOMETRICS_MODALITY, biometricsModality); args.putBoolean(KEU_DESTROY_ACTIVITY, destroyActivity); dialog.setArguments(args); dialog.setCancelable(false); return dialog; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mBiometricsModality = getArguments().getInt(KEY_BIOMETRICS_MODALITY); mDestroyActivity = getArguments().getBoolean(KEU_DESTROY_ACTIVITY); int titleId; int messageId; switch (mBiometricsModality) { Loading @@ -65,9 +77,16 @@ public class BiometricsSplitScreenDialog extends InstrumentedDialogFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(titleId) .setMessage(messageId) .setCancelable(false) .setPositiveButton( R.string.biometric_settings_add_biometrics_in_split_mode_ok, (DialogInterface.OnClickListener) (dialog, which) -> dialog.dismiss()); (DialogInterface.OnClickListener) (dialog, which) -> { dialog.dismiss(); if (mDestroyActivity) { getActivity().setResult(RESULT_SKIP); getActivity().finish(); } }); return builder.create(); } Loading src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java +0 −28 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.settings.biometrics.combination; import static android.app.Activity.RESULT_OK; import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE; import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT; import static com.android.settings.password.ChooseLockPattern.RESULT_FINISHED; Loading Loading @@ -48,12 +46,10 @@ import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.BiometricStatusPreferenceController; import com.android.settings.biometrics.BiometricUtils; import com.android.settings.biometrics.BiometricsSplitScreenDialog; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.activityembedding.ActivityEmbeddingUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.transition.SettingsTransitionHelper; Loading Loading @@ -167,18 +163,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { // since FingerprintSettings and FaceSettings revoke the challenge when finishing. if (getFacePreferenceKey().equals(key)) { mDoNotFinishActivity = true; // If it's split mode and there is no enrolled face, show the dialog. (if there is // enrolled face, FaceSettingsEnrollButtonPreferenceController#onClick will handle // the dialog) if (getActivity().isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded( getActivity()) && !mFaceManager.hasEnrolledTemplates(mUserId)) { BiometricsSplitScreenDialog.newInstance(TYPE_FACE).show( getActivity().getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); return true; } mFaceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final Activity activity = getActivity(); if (activity == null || activity.isFinishing()) { Loading Loading @@ -209,18 +193,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { return true; } else if (getFingerprintPreferenceKey().equals(key)) { mDoNotFinishActivity = true; // If it's split mode and there is no enrolled fingerprint, show the dialog. (if // there is enrolled fingerprint, FingerprintSettingsFragment#onPreferenceTreeClick // will handle the dialog) if (getActivity().isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded( getActivity()) && !mFingerprintManager.hasEnrolledFingerprints(mUserId)) { BiometricsSplitScreenDialog.newInstance(TYPE_FINGERPRINT).show( getActivity().getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); return true; } mFingerprintManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final Activity activity = getActivity(); if (activity == null || activity.isFinishing()) { Loading Loading
src/com/android/settings/biometrics/BiometricEnrollBase.java +13 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling; import com.android.settings.core.InstrumentedActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.activityembedding.ActivityEmbeddingUtils; import com.android.systemui.unfold.compat.ScreenSizeFoldProvider; import com.android.systemui.unfold.updates.FoldProvider; Loading Loading @@ -173,6 +174,14 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { mUserId = getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); mPostureGuidanceIntent = FeatureFactory.getFeatureFactory() .getFaceFeatureProvider().getPostureGuidanceIntent(getApplicationContext()); // Remove the existing split screen dialog. BiometricsSplitScreenDialog dialog = (BiometricsSplitScreenDialog) getSupportFragmentManager() .findFragmentByTag(BiometricsSplitScreenDialog.class.getName()); if (dialog != null) { getSupportFragmentManager().beginTransaction().remove(dialog).commit(); } } @Override Loading Loading @@ -338,4 +347,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { final ColorStateList stateList = Utils.getColorAttr(this, android.R.attr.windowBackground); return stateList != null ? stateList.getDefaultColor() : Color.TRANSPARENT; } protected boolean shouldShowSplitScreenDialog() { return isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded(this); } }
src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +13 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,12 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (shouldShowSplitScreenDialog()) { BiometricsSplitScreenDialog .newInstance(getModality(), !WizardManagerHelper.isAnySetupWizard(getIntent())) .show(getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); } if (savedInstanceState != null) { mConfirmingCredentials = savedInstanceState.getBoolean(KEY_CONFIRMING_CREDENTIALS); mHasScrolledToBottom = savedInstanceState.getBoolean(KEY_SCROLLED_TO_BOTTOM); Loading Loading @@ -293,6 +299,13 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase @Override protected void onNextButtonClick(View view) { // If it's not on suw, this method shouldn't be accessed. if (shouldShowSplitScreenDialog() && WizardManagerHelper.isAnySetupWizard(getIntent())) { BiometricsSplitScreenDialog.newInstance(getModality(), false /*destroyActivity*/) .show(getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); return; } mNextClicked = true; if (checkMaxEnrolled() == 0) { // Lock thingy is already set up, launch directly to the next page Loading
src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java +8 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,14 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase } public void startEnrollment() { // If it's in multi window mode, dialog is shown, do not start enrollment. if (shouldShowSplitScreenDialog()) { return; } startEnrollmentInternal(); } protected void startEnrollmentInternal() { mSidecar = (BiometricEnrollSidecar) getSupportFragmentManager() .findFragmentByTag(TAG_SIDECAR); if (mSidecar == null) { Loading
src/com/android/settings/biometrics/BiometricsSplitScreenDialog.java +22 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.settings.biometrics; import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_SKIP; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.DialogInterface; Loading @@ -34,23 +36,33 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; */ public class BiometricsSplitScreenDialog extends InstrumentedDialogFragment { private static final String KEY_BIOMETRICS_MODALITY = "biometrics_modality"; private static final String KEU_DESTROY_ACTIVITY = "destroy_activity"; @BiometricAuthenticator.Modality private int mBiometricsModality; private boolean mDestroyActivity; /** Returns the new instance of the class */ /** * Returns the new instance of the class * @param biometricsModality Biometric modality. * @param destroyActivity Whether to destroy the activity * @return the current {@link BiometricsSplitScreenDialog} */ public static BiometricsSplitScreenDialog newInstance( @BiometricAuthenticator.Modality int biometricsModality) { @BiometricAuthenticator.Modality int biometricsModality, boolean destroyActivity) { final BiometricsSplitScreenDialog dialog = new BiometricsSplitScreenDialog(); final Bundle args = new Bundle(); args.putInt(KEY_BIOMETRICS_MODALITY, biometricsModality); args.putBoolean(KEU_DESTROY_ACTIVITY, destroyActivity); dialog.setArguments(args); dialog.setCancelable(false); return dialog; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mBiometricsModality = getArguments().getInt(KEY_BIOMETRICS_MODALITY); mDestroyActivity = getArguments().getBoolean(KEU_DESTROY_ACTIVITY); int titleId; int messageId; switch (mBiometricsModality) { Loading @@ -65,9 +77,16 @@ public class BiometricsSplitScreenDialog extends InstrumentedDialogFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(titleId) .setMessage(messageId) .setCancelable(false) .setPositiveButton( R.string.biometric_settings_add_biometrics_in_split_mode_ok, (DialogInterface.OnClickListener) (dialog, which) -> dialog.dismiss()); (DialogInterface.OnClickListener) (dialog, which) -> { dialog.dismiss(); if (mDestroyActivity) { getActivity().setResult(RESULT_SKIP); getActivity().finish(); } }); return builder.create(); } Loading
src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java +0 −28 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.settings.biometrics.combination; import static android.app.Activity.RESULT_OK; import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE; import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT; import static com.android.settings.password.ChooseLockPattern.RESULT_FINISHED; Loading Loading @@ -48,12 +46,10 @@ import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.BiometricStatusPreferenceController; import com.android.settings.biometrics.BiometricUtils; import com.android.settings.biometrics.BiometricsSplitScreenDialog; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.activityembedding.ActivityEmbeddingUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.transition.SettingsTransitionHelper; Loading Loading @@ -167,18 +163,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { // since FingerprintSettings and FaceSettings revoke the challenge when finishing. if (getFacePreferenceKey().equals(key)) { mDoNotFinishActivity = true; // If it's split mode and there is no enrolled face, show the dialog. (if there is // enrolled face, FaceSettingsEnrollButtonPreferenceController#onClick will handle // the dialog) if (getActivity().isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded( getActivity()) && !mFaceManager.hasEnrolledTemplates(mUserId)) { BiometricsSplitScreenDialog.newInstance(TYPE_FACE).show( getActivity().getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); return true; } mFaceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final Activity activity = getActivity(); if (activity == null || activity.isFinishing()) { Loading Loading @@ -209,18 +193,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { return true; } else if (getFingerprintPreferenceKey().equals(key)) { mDoNotFinishActivity = true; // If it's split mode and there is no enrolled fingerprint, show the dialog. (if // there is enrolled fingerprint, FingerprintSettingsFragment#onPreferenceTreeClick // will handle the dialog) if (getActivity().isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded( getActivity()) && !mFingerprintManager.hasEnrolledFingerprints(mUserId)) { BiometricsSplitScreenDialog.newInstance(TYPE_FINGERPRINT).show( getActivity().getSupportFragmentManager(), BiometricsSplitScreenDialog.class.getName()); return true; } mFingerprintManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final Activity activity = getActivity(); if (activity == null || activity.isFinishing()) { Loading