Запрос пользовательской биометрии при возврате приложения из фона - PullRequest
0 голосов
/ 01 февраля 2019

В моем приложении я встроил биометрическую аутентификацию, которая будет показывать пользователям экран и запрашивать их отпечатки пальцев / ПИН-код непосредственно после заставки.

public abstract class BaseActivity extends AppCompatActivity {
    ...
    protected boolean authenticate() {
    if (isBiometricEnabled) {
        final KeyguardManager systemService = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
        if (systemService == null) return false;
        if (systemService.isKeyguardSecure()) {
            final Intent confirmDeviceCredentialIntent = systemService
                    .createConfirmDeviceCredentialIntent(getString(R.string.app_name_long), getAuthBodyText());
            startActivityForResult(confirmDeviceCredentialIntent, REQUEST_CODE_BIOMETRIC_AUTHENTICATION);
        } else {
            AlertDialog dialog = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle).create();
            dialog.setTitle(R.string.security_dialog_title);
            dialog.setMessage(getString(R.string.security_dialog_message));
            dialog.setCancelable(false);
            dialog.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.security_dialog_button), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent();
                    String action;
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
                        action = Settings.ACTION_FINGERPRINT_ENROLL;
                    } else {
                        action = Settings.ACTION_SECURITY_SETTINGS;
                    }
                    intent.setAction(action);
                    startActivityForResult(intent, REQUEST_CODE_SETUP_BIOMETRIC);
                }
            });
            dialog.show();
        }
        return true;
    }
    return false;
    }
}

И внутри моей SplashActivity

public class SplashActivity extends BaseActivity {
    public void authenticateAndNavigate() {

        if (!authenticate()) {
            navigateToHome();               
        }
    }
}

Этот подход работает нормально.Тем не менее, я хочу изменить поведение, чтобы пользователи вынуждены вводить свой отпечаток пальца / PIN-код при каждом запуске приложения в фоновом режиме и возвращаться снова.

Я пытался добавить его в методе onResume() внутримой BaseActivity, но он не сработал, так как биометрическая активность будет отображаться onPause() вызывается для моего BaseActivity, и когда пользователь завершит работу, onResume() будет вызван снова, и приложение будет зацикленопоказывает только биометрическую активность.

Есть еще идеи, как это реализовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...