Fix Settings crash

When pressing back from fingerprint enrollment flow, Settings will get
crashed. That was caused by calling a destroied fragment manager to
create an error dialog.

Bug: 184234884
Test: manual test
1) Settings -> Security -> Fingerprint
2) Following the enrollment flow, then pressing back from either find
sensor or enrolling page
3) Observe and see if there's no crash

Change-Id: I2028df0c6a65e8e960a627161834660681b7b70a
This commit is contained in:
Mill Chen
2021-04-01 17:33:17 +08:00
parent e3e3fc915a
commit 05c2a2bf41

View File

@@ -20,6 +20,8 @@ import android.app.settings.SettingsEnums;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import androidx.fragment.app.FragmentManager;
import com.android.settings.R;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.android.settings.biometrics.BiometricErrorDialog;
@@ -31,7 +33,10 @@ public class FingerprintErrorDialog extends BiometricErrorDialog {
public static void showErrorDialog(BiometricEnrollBase host, int errMsgId) {
final CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId);
dialog.show(host.getSupportFragmentManager(), FingerprintErrorDialog.class.getName());
final FragmentManager fragmentManager = host.getSupportFragmentManager();
if (!fragmentManager.isDestroyed()) {
dialog.show(fragmentManager, FingerprintErrorDialog.class.getName());
}
}
private static int getErrorMessage(int errMsgId) {