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
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index 59bbc13..40a719a 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -593,10 +593,16 @@
}
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);