jamie-mh / AuthenticatorPro

📱 Two-Factor Authentication (2FA) client for Android + Wear OS
https://authenticatorpro.jmh.me
GNU General Public License v3.0
2.98k stars 198 forks source link

Apps Crashes when scanning/opening QR code #891

Closed dr460nf1r3 closed 1 year ago

dr460nf1r3 commented 1 year ago

Describe the bug When opening the QR code modes, the app instantly crashes.

To Reproduce Steps to reproduce the behavior:

  1. Click +
  2. Select QR code
  3. Select either of both options
  4. See error

Expected behavior I can add an OTP via QR code.

App Version 1.21

Additional context

Java.Lang.IllegalStateException: MlKitContext has not been initialized
   at Java.Interop.JniEnvironment.StaticMethods.CallStaticObjectMethod(JniObjectReference , JniMethodInfo , JniArgumentValue* )
   at Java.Interop.JniPeerMembers.JniStaticMethods.InvokeObjectMethod(String , JniArgumentValue* )
   at Xamarin.Google.MLKit.Vision.BarCode.BarcodeScanning.GetClient(BarcodeScannerOptions )
   at AuthenticatorPro.Droid.QrCode.Analyser.MlKitQrCodeImageAnalyser..ctor()
   at AuthenticatorPro.Droid.Activity.ScanActivity.OnCreate(Bundle savedInstanceState)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object )
   at Android.App.SyncContext.<>c__DisplayClass2_0.<Post>b__0()
   at Java.Lang.Thread.RunnableImplementor.Run()
   at Java.Lang.IRunnableInvoker.n_Run(IntPtr , IntPtr )
   at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V(_JniMarshal_PP_V , IntPtr , IntPtr )
  --- End of managed Java.Lang.IllegalStateException stack trace ---
java.lang.IllegalStateException: MlKitContext has not been initialized
    at com.google.android.gms.common.internal.Preconditions.checkState(com.google.android.gms:play-services-basement@@18.2.0:2)
    at com.google.mlkit.common.sdkinternal.MlKitContext.getInstance(com.google.mlkit:common@@18.8.0:1)
    at com.google.mlkit.vision.barcode.BarcodeScanning.getClient(com.google.android.gms:play-services-mlkit-barcode-scanning@@18.2.0:3)
    at mono.java.lang.RunnableImplementor.n_run(Native Method)
    at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:31)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7914)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

  --- End of managed Java.Lang.IllegalStateException stack trace ---
java.lang.IllegalStateException: MlKitContext has not been initialized
    at com.google.android.gms.common.internal.Preconditions.checkState(com.google.android.gms:play-services-basement@@18.2.0:2)
    at com.google.mlkit.common.sdkinternal.MlKitContext.getInstance(com.google.mlkit:common@@18.8.0:1)
    at com.google.mlkit.vision.barcode.BarcodeScanning.getClient(com.google.android.gms:play-services-mlkit-barcode-scanning@@18.2.0:3)
    at mono.java.lang.RunnableImplementor.n_run(Native Method)
    at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:31)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7914)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
jamie-mh commented 1 year ago

I'm not able to reproduce this issue on my end. A workaround in 07efcb8 should fix the issue on affected devices.

dr460nf1r3 commented 1 year ago

Thanks for the quick fix, I'm eager to test it once it's available 😊