From da433902d41baec2c1fdbe35ad853d2d7ce7bc1d Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Fri, 17 Jul 2015 13:16:40 -0700 Subject: [PATCH] [Fingerprint] Send RESULT_CANCELED when back from Add another Forward the result in the enrolling screen from the finish screen, so that if the user presses back in "Add another" after enrolling the first fingerprint, it will return RESULT_CANCELED instead of RESULT_FINISHED, and go back to find sensor screen. This results in the following behavioral changes: - RESULT_FINISHED will only be sent if the user presses "Done" in FingerprintEnrollFinish. If the user clicks back in FingerprintEnrollEnrolling, they will always go back to the previous screen with RESULT_CANCELED, which would either be FindSensor or FingerprintSettings. - If the user presses back in FingerprintEnrollFinish, which is only possible outside of Setup Wizard, they will be back in Find Sensor, and pressing next will enroll an additional fingerprint. - Edge case: if the user enrolled the maximum number of fingerprints, and presses back, they will be bounced all the way back to Settings > Security. Bug: 22552741 Change-Id: Ifc5e8a9150491b4303e01ebd0fc17b6d39dd372d --- .../settings/fingerprint/FingerprintEnrollEnrolling.java | 2 +- .../fingerprint/FingerprintEnrollFindSensor.java | 9 +++++++++ .../settings/fingerprint/FingerprintEnrollFinish.java | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java index b8ac0404f1b..5d4edbd4c40 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java @@ -214,9 +214,9 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase private void launchFinish(byte[] token) { Intent intent = getFinishIntent(); + intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); startActivity(intent); - setResult(RESULT_FINISHED); finish(); } diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java index 552ed7108eb..1d9d1c53eb6 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java @@ -16,6 +16,7 @@ package com.android.settings.fingerprint; +import android.content.Context; import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; @@ -75,6 +76,14 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase { if (resultCode == RESULT_FINISHED) { setResult(RESULT_FINISHED); finish(); + } else { + FingerprintManager fpm = getSystemService(FingerprintManager.class); + int enrolled = fpm.getEnrolledFingerprints().size(); + int max = getResources().getInteger( + com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); + if (enrolled >= max) { + finish(); + } } } else { super.onActivityResult(requestCode, resultCode, data); diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java index 7e4d656dd36..7ce340d21be 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java @@ -55,6 +55,7 @@ public class FingerprintEnrollFinish extends FingerprintEnrollBase { @Override protected void onNextButtonClick() { + setResult(RESULT_FINISHED); finish(); }