/* * Copyright (C) 2023 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; 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; import android.hardware.biometrics.BiometricAuthenticator; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; /** * This alert dialog shows when fingerprint is being added in multi window mode. */ 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 * @param biometricsModality Biometric modality. * @param destroyActivity Whether to destroy the activity * @return the current {@link BiometricsSplitScreenDialog} */ public static BiometricsSplitScreenDialog newInstance( @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) { case TYPE_FACE: titleId = R.string.biometric_settings_add_face_in_split_mode_title; messageId = R.string.biometric_settings_add_face_in_split_mode_message; break; default: titleId = R.string.biometric_settings_add_fingerprint_in_split_mode_title; messageId = R.string.biometric_settings_add_fingerprint_in_split_mode_message; } 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(); if (mDestroyActivity) { getActivity().setResult(RESULT_SKIP); getActivity().finish(); } }); return builder.create(); } @Override public int getMetricsCategory() { switch (mBiometricsModality) { case TYPE_FACE: return SettingsEnums.DIALOG_ADD_FACE_ERROR_IN_SPLIT_MODE; default: return SettingsEnums.DIALOG_ADD_FINGERPRINT_ERROR_IN_SPLIT_MODE; } } }