From 8e12f5257d0f662431fec2bd5cddeb1c9acef76d Mon Sep 17 00:00:00 2001 From: lbill Date: Mon, 17 Apr 2023 11:41:55 +0000 Subject: [PATCH] Add Null check FingerprintSettings#updateAddPreference() When fingerprint finish enrollment, user click Done The flow would be: -> wm_finish_activity -> relaunch_resume_activity -> wm_on_destroy_called -> wm_on_create_called -> wm_on_start_called -> wm_on_activity_result_called In U, we need to add NPE check when updateAddPreference() earlier then addFingerprintItemPreferences() -> wm_on_resume_called Bug: 275519315 Test: manual enroll SFPS, in FingerprintEnrollEnrolling, rotate device, then complete the enrollment verify the flow never crash and user can see enrolled fingerprint in FingerprintSettings Change-Id: Ia262741aeceeb36eefd159ad2ca1c9fa0e061d54 --- .../biometrics/fingerprint/FingerprintSettings.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 59bbc1379e8..40a719a35d4 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -593,10 +593,16 @@ public class FingerprintSettings extends SubSettings { } private void updateAddPreference() { - if (getActivity() == null) return; // Activity went away + if (getActivity() == null) { + return; // Activity went away + } final Preference addPreference = findPreference(KEY_FINGERPRINT_ADD); + if (addPreference == null) { + return; // b/275519315 Skip if updateAddPreference() invoke before addPreference() + } + /* Disable preference if too many fingerprints added */ final int max = getContext().getResources().getInteger( com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);