smstuebe / xamarin-fingerprint

Xamarin and MvvMCross plugin for authenticate a user via fingerprint sensor
Microsoft Public License
490 stars 115 forks source link

Crash on Samsung (<= API 25) - Cannot catch exception. #147

Closed JanettHolst290490 closed 2 years ago

JanettHolst290490 commented 4 years ago

Steps to reproduce

The following method crashes on specific Samsung devices, even though it's wrapped in a try-catch. The catch is not working

public static async Task<bool> IsBiometricAuthPossible()
{
    try
    {
        return await CrossFingerprint.Current.IsAvailableAsync(false);
    }
    catch (Exception e)
    {
        LogUtils.LogExceptionForReport(e, "From BiometricUtils.IsBiometricAuthPossible");
    }
    return false;
}

The only thing we call before this is the following code in the previous Activity:

CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity);
CrossCurrentActivity.Current.Activity = this;
CrossFingerprint.SetDialogFragmentType<CustomFingerprintDialogFragment>();

We had to make a quick fix like this, which results in all samsung devices (api <= 25) will not be able to use fingerprint. This is really bad !

if (!DeviceUtils.IsSamsungVersion7() && await BiometricUtils.IsBiometricAuthPossible())
{
    ...

Expected behavior

CrossFingerprint.Current.IsAvailableAsync(false) == false

Actual behavior

It crashes with the following exception:

E/mono-rt (18166): [ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.Exception: This device does not provide FingerprintService.
E/mono-rt (18166):   at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <d946d6d2a51841a88b46e7a3bf6544eb>:0 
E/mono-rt (18166):   at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) <0xc8ca6428 + 0x000a7> in <d946d6d2a51841a88b46e7a3bf6544eb>:0 
E/mono-rt (18166):   at Com.Samsung.Android.Sdk.Pass.Spass.Initialize (Android.Content.Context p0) <0xc5f12ca8 + 0x000bf> in <c6ca7f5d9f8a44b0b8611d74e27ff1fa>:0 
E/mono-rt (18166):   --- End of managed Java.Lang.Exception stack trace ---
E/mono-rt (18166): com.samsung.android.sdk.SsdkUnsupportedException: This device does not provide FingerprintService.
E/mono-rt (18166):  at com.samsung.android.sdk.pass.Spass.initialize(Unknown Source)
E/mono-rt (18166):  at mono.java.lang.RunnableImplementor.n_run(Native Method)
E/mono-rt (18166):  at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
E/mono-rt (18166):  at android.os.Handler.handleCallback(Handler.java:751)
E/mono-rt (18166):  at android.os.Handler.dispatchMessage(Handler.java:95)
E/mono-rt (18166):  at android.os.Looper.loop(Looper.java:154)
E/mono-rt (18166):  at android.app.ActivityThread.main(ActivityThread.java:6836)
E/mono-rt (18166):  at java.lang.reflect.Method.invoke(Native Method)
E/mono-rt (18166):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
E/mono-rt (18166):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

on the following devices:

Crashlog

E/mono-rt (18166): [ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.Exception: This device does not provide FingerprintService.
E/mono-rt (18166):   at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <d946d6d2a51841a88b46e7a3bf6544eb>:0 
E/mono-rt (18166):   at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) <0xc8ca6428 + 0x000a7> in <d946d6d2a51841a88b46e7a3bf6544eb>:0 
E/mono-rt (18166):   at Com.Samsung.Android.Sdk.Pass.Spass.Initialize (Android.Content.Context p0) <0xc5f12ca8 + 0x000bf> in <c6ca7f5d9f8a44b0b8611d74e27ff1fa>:0 
E/mono-rt (18166):   --- End of managed Java.Lang.Exception stack trace ---
E/mono-rt (18166): com.samsung.android.sdk.SsdkUnsupportedException: This device does not provide FingerprintService.
E/mono-rt (18166):  at com.samsung.android.sdk.pass.Spass.initialize(Unknown Source)
E/mono-rt (18166):  at mono.java.lang.RunnableImplementor.n_run(Native Method)
E/mono-rt (18166):  at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
E/mono-rt (18166):  at android.os.Handler.handleCallback(Handler.java:751)
E/mono-rt (18166):  at android.os.Handler.dispatchMessage(Handler.java:95)
E/mono-rt (18166):  at android.os.Looper.loop(Looper.java:154)
E/mono-rt (18166):  at android.app.ActivityThread.main(ActivityThread.java:6836)
E/mono-rt (18166):  at java.lang.reflect.Method.invoke(Native Method)
E/mono-rt (18166):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
E/mono-rt (18166):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

Configuration

Version of the Plugin: Plugin.Fingerprint: 1.4.9

Device:

Platform: === Visual Studio Enterprise 2019 for Mac ===

Version 8.2.4 (build 17) Installation UUID: 4c2dc437-7869-4392-9b24-f24a2c4f02e7 GTK+ 2.24.23 (Raleigh theme) Xamarin.Mac 5.14.0.85 (d16-2-fix-mac-updates / 86973979)

Package version: 600000327

=== Mono Framework MDK ===

Runtime: Mono 6.0.0.327 (2019-02/f8ea05bddcb) (64-bit) Package version: 600000327

=== NuGet ===

Version: 5.1.0.6013

=== .NET Core ===

Runtime: /usr/local/share/dotnet/dotnet Runtime Versions: 2.1.12 2.1.11 2.1.9 2.1.8 2.1.2 2.1.1 2.0.5 2.0.0 SDK: /usr/local/share/dotnet/sdk/2.1.701/Sdks SDK Versions: 2.1.701 2.1.700 2.1.505 2.1.504 2.1.302 2.1.301 2.1.4 2.0.0 MSBuild SDKs: /Library/Frameworks/Mono.framework/Versions/6.0.0/lib/mono/msbuild/Current/bin/Sdks

=== Xamarin.Profiler ===

Version: 1.6.11 Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

=== Updater ===

Version: 11

=== Xamarin.Android ===

Version: 9.4.1.0 (Visual Studio Enterprise) Commit: xamarin-android/d16-2/ebd65c9 Android SDK: /Users/janettholst/Library/Developer/Xamarin/android-sdk-macosx Supported Android versions: 8.0 (API level 26) 8.1 (API level 27)

SDK Tools Version: 26.1.1 SDK Platform Tools Version: 29.0.4 SDK Build Tools Version: 29.0.2

Build Information: Mono: mono/mono/2019-02@e6f5369c2d2 Java.Interop: xamarin/java.interop/d16-2@d64ada5 LibZipSharp: grendello/LibZipSharp/d16-2@caa0c74 LibZip: nih-at/libzip/rel-1-5-1@b95cf3f ProGuard: xamarin/proguard/master@905836d SQLite: xamarin/sqlite/3.27.1@8212a2d Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-2@6f6c969

=== Microsoft Mobile OpenJDK ===

Java SDK: /Users/janettholst/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.9 1.8.0-9 Android Designer EPL code available here: https://github.com/xamarin/AndroidDesigner.EPL

=== Android Device Manager ===

Version: 1.2.0.60 Hash: 686c817 Branch: remotes/origin/d16-2 Build date: 2019-08-07 15:49:58 UTC

=== Apple Developer Tools ===

Xcode 10.3 (14492.2) Build 10G8

=== Xamarin.Mac ===

Version: 5.14.0.114 (Visual Studio Enterprise) Hash: c6691164 Branch: d16-2 Build date: 2019-07-29 15:54:06-0400

=== Xamarin.iOS ===

Version: 12.14.0.114 (Visual Studio Enterprise) Hash: c6691164 Branch: d16-2 Build date: 2019-07-29 15:54:05-0400

=== Xamarin Inspector ===

Version: 1.4.3 Hash: db27525 Branch: 1.4-release Build date: Mon, 09 Jul 2018 21:20:18 GMT Client compatibility: 1

=== Xamarin Designer ===

Version: 16.2.0.379 Hash: 3f0652957 Branch: remotes/origin/d16-2 Build date: 2019-08-01 17:32:50 UTC

=== Build Information ===

Release ID: 802040017 Git revision: 9b155edbf23e9fe8b477b3236a342164fabf5f6b Build date: 2019-08-16 00:21:01+00 Build branch: release-8.2 Xamarin extensions: 9f2598b5f2371ba2903988c2cd87a9759d0255f2

=== Operating System ===

Mac OS X 10.14.6 Darwin 18.7.0 Darwin Kernel Version 18.7.0 Tue Aug 20 16:57:14 PDT 2019 root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64

smsissuechecker commented 4 years ago

Hi @JanettHolst290490,

I'm the friendly issue checker. Thanks for using the issue template :star2: I appreciate it very much. I'm sure, the maintainers of this repository will answer, soon.