hieuvp / react-native-fingerprint-scanner

Provide Fingerprint, Touch ID, and Face ID Scanner for React Native (Compatible with both Android and iOS)
https://www.npmjs.com/package/react-native-fingerprint-scanner
870 stars 298 forks source link

IllegalArgumentException - FragmentActivity must not be null #137

Closed iagormoraes closed 4 years ago

iagormoraes commented 4 years ago

Description

Hello, I'm having issues with the fingerprint on some devices in android 9 and 10, the stack trace points to the instance of BiometricPrompt.

Package Version

react-native: 0.62.2 react-native-fingerprint-scanner: ^4.0.0

Affected devices

Redmi Note 7 Huawei P20 lite ZTE Z717VL (lavender) Huawei Honor 9 Lite (HWLLD-H) Samsung Galaxy S8+ (dream2lte) Samsung Galaxy A30s (a30s) Redmi Redmi K20 (davinci)

Stack trace

IllegalArgumentException
FragmentActivity must not be null

java.lang.IllegalArgumentException
com.hieuvp.fingerprint.ReactNativeFingerprintScannerModule.getBiometricPrompt

java.lang.IllegalArgumentException: 
  at androidx.biometric.BiometricPrompt.<init> (BiometricPrompt.java:584)
  at com.hieuvp.fingerprint.ReactNativeFingerprintScannerModule.getBiometricPrompt (ReactNativeFingerprintScannerModule.java:109)
  at com.hieuvp.fingerprint.ReactNativeFingerprintScannerModule$1.run (ReactNativeFingerprintScannerModule.java:123)
  at android.os.Handler.handleCallback (Handler.java:907)
  at android.os.Handler.dispatchMessage (Handler.java:105)
  at android.os.Looper.loop (Looper.java:216)
  at android.app.ActivityThread.main (ActivityThread.java:7625)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)
SMJ93 commented 4 years ago

I am getting the same on "react-native-fingerprint-scanner": "5.0.0", with a Samsung S9:

Screenshot 2020-06-01 at 13 02 15

Fatal Exception: java.lang.IllegalArgumentException: FragmentActivity must not be null
       at androidx.biometric.BiometricPrompt.<init>(BiometricPrompt.java:584)
       at com.hieuvp.fingerprint.ReactNativeFingerprintScannerModule.getBiometricPrompt(ReactNativeFingerprintScannerModule.java:109)
       at com.hieuvp.fingerprint.ReactNativeFingerprintScannerModule$1.run(ReactNativeFingerprintScannerModule.java:123)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:237)
       at android.app.ActivityThread.main(ActivityThread.java:7857)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
iagormoraes commented 4 years ago

The issue is happening on the instance of BiometricPrompt, line 109 where FragmentActivity must not be null

maybe a fix could be

FragmentActivity fragmentActivity = (FragmentActivity) mReactContext.getCurrentActivity();

EDIT: I've forked this repo to fix this problem, can check here

phillbaker commented 4 years ago

closed in https://github.com/hieuvp/react-native-fingerprint-scanner/pull/141