From 128076458670320bc6bc7c69d11798f3e4f7bb72 Mon Sep 17 00:00:00 2001 From: Sander Keymeulen Date: Thu, 25 Jul 2019 15:23:34 +0200 Subject: [PATCH 1/2] catch IllegalStateException that can occur when application is running in background, so app does not crash --- src/android/FingerprintAuthAux.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/android/FingerprintAuthAux.java b/src/android/FingerprintAuthAux.java index 6cf7ad6..8c7ca67 100644 --- a/src/android/FingerprintAuthAux.java +++ b/src/android/FingerprintAuthAux.java @@ -503,7 +503,11 @@ public void run() { // Show the fingerprint dialog. The user has the option to use the fingerprint with // crypto, or you can fall back to using a server-side verified password. mFragment.setCryptoObject(new FingerprintManager.CryptoObject(mCipher)); - mFragment.show(cordova.getActivity().getFragmentManager(), DIALOG_FRAGMENT_TAG); + try { + mFragment.show(cordova.getActivity().getFragmentManager(), DIALOG_FRAGMENT_TAG); + } catch (IllegalStateException ignored) { + Log.i(TAG, "Failed to show fingerprint dialog, application is running in background"); + } } else { mPluginResult = new PluginResult(PluginResult.Status.ERROR, "Failed to init Cipher"); mCallbackContext.sendPluginResult(mPluginResult); From fbf587f1029411238f7a8ec53a71935b077d80eb Mon Sep 17 00:00:00 2001 From: Sander Keymeulen Date: Thu, 25 Jul 2019 16:00:31 +0200 Subject: [PATCH 2/2] Return error in callback so we can handle this in implementation --- src/android/FingerprintAuthAux.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/android/FingerprintAuthAux.java b/src/android/FingerprintAuthAux.java index 8c7ca67..2c88d39 100644 --- a/src/android/FingerprintAuthAux.java +++ b/src/android/FingerprintAuthAux.java @@ -506,7 +506,8 @@ public void run() { try { mFragment.show(cordova.getActivity().getFragmentManager(), DIALOG_FRAGMENT_TAG); } catch (IllegalStateException ignored) { - Log.i(TAG, "Failed to show fingerprint dialog, application is running in background"); + mPluginResult = new PluginResult(PluginResult.Status.ERROR, "Failed to open fingerprint dialog"); + mCallbackContext.sendPluginResult(mPluginResult); } } else { mPluginResult = new PluginResult(PluginResult.Status.ERROR, "Failed to init Cipher");