facundomedica / fast_qr_reader_view

A Fast QR Reader widget for Flutter. For both Android and iOS
MIT License
295 stars 163 forks source link

Crash on permission response #41

Closed ThomasEcalle closed 2 years ago

ThomasEcalle commented 5 years ago

Hi,

First of all, thank you a lot for this library ! I was looking fur such a customizable QrCode reader in flutter :)

I just want to make you know about a crash, in the example application, on Android, when we click on permission request dialog.

Neither we click on "accept" or "deny", we got :

FATAL EXCEPTION: main
E/AndroidRuntime(19537): Process: co.apperto.fastqrreaderviewexample, PID: 19537
E/AndroidRuntime(19537): java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=513469796, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {co.apperto.fastqrreaderviewexample/co.apperto.fastqrreaderviewexample.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void java.lang.Runnable.run()' on a null object reference
E/AndroidRuntime(19537):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4360)
E/AndroidRuntime(19537):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4402)
E/AndroidRuntime(19537):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
E/AndroidRuntime(19537):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
E/AndroidRuntime(19537):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
E/AndroidRuntime(19537):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
E/AndroidRuntime(19537):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(19537):    at android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime(19537):    at android.app.ActivityThread.main(ActivityThread.java:6669)
E/AndroidRuntime(19537):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(19537):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/AndroidRuntime(19537):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
E/AndroidRuntime(19537): Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void java.lang.Runnable.run()' on a null object reference
E/AndroidRuntime(19537):    at co.apperto.fastqrreaderview.FastQrReaderViewPlugin$CameraRequestPermissionsListener.onRequestPermissionsResult(FastQrReaderViewPlugin.java:330)
E/AndroidRuntime(19537):    at io.flutter.app.FlutterPluginRegistry.onRequestPermissionsResult(FlutterPluginRegistry.java:203)
E/AndroidRuntime(19537):    at io.flutter.app.FlutterActivityDelegate.onRequestPermissionsResult(FlutterActivityDelegate.java:127)
E/AndroidRuntime(19537):    at io.flutter.app.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:137)
E/AndroidRuntime(19537):    at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7608)
E/AndroidRuntime(19537):    at android.app.Activity.dispatchActivityResult(Activity.java:7458)
E/AndroidRuntime(19537):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4353)

I tried to understand what causes it in Android plugin but found nothing :/

facundomedica commented 5 years ago

Please check if it was fixed with the latest PR merged, thanks!

xcoinmakers-fukuda commented 5 years ago

@facundomedica I tried to use this code, but it still crashed with the same error.

xalabax commented 5 years ago

D/AndroidRuntime(17750): Shutting down VM E/AndroidRuntime(17750): FATAL EXCEPTION: main E/AndroidRuntime(17750): Process: com.lan4.lan4, PID: 17750 E/AndroidRuntime(17750): java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=513469796, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.lan4.lan4/com.lan4.lan4.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void java.lang.Runnable.run()' on a null object reference E/AndroidRuntime(17750): at android.app.ActivityThread.deliverResults(ActivityThread.java:4382) E/AndroidRuntime(17750): at android.app.ActivityThread.handleSendResult(ActivityThread.java:4424) E/AndroidRuntime(17750): at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) E/AndroidRuntime(17750): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) E/AndroidRuntime(17750): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) E/AndroidRuntime(17750): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1814) E/AndroidRuntime(17750): at android.os.Handler.dispatchMessage(Handler.java:106) E/AndroidRuntime(17750): at android.os.Looper.loop(Looper.java:280) E/AndroidRuntime(17750): at android.app.ActivityThread.main(ActivityThread.java:6706) E/AndroidRuntime(17750): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(17750): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) E/AndroidRuntime(17750): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) E/AndroidRuntime(17750): Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void java.lang.Runnable.run()' on a null object reference E/AndroidRuntime(17750): at co.apperto.fastqrreaderview.FastQrReaderViewPlugin$CameraRequestPermissionsListener.onRequestPermissionsResult(FastQrReaderViewPlugin.java:330) E/AndroidRuntime(17750): at io.flutter.app.FlutterPluginRegistry.onRequestPermissionsResult(FlutterPluginRegistry.java:203) E/AndroidRuntime(17750): at io.flutter.app.FlutterActivityDelegate.onRequestPermissionsResult(FlutterActivityDelegate.java:128) E/AndroidRuntime(17750): at io.flutter.app.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:137) E/AndroidRuntime(17750): at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7608) E/AndroidRuntime(17750): at android.app.Activity.dispatchActivityResult(Activity.java:7458) E/AndroidRuntime(17750): at android.app.ActivityThread.deliverResults(ActivityThread.java:4375)

Sony Xperia ZX1, 9.0

xesun commented 5 years ago

E/AndroidRuntime(27099): java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=513469796, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {mn.verus.restaurants/mn.verus.restaurants.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void java.lang.Runnable.run()' on a null object reference E/AndroidRuntime(27099): at android.app.ActivityThread.deliverResults(ActivityThread.java:4921) E/AndroidRuntime(27099): at android.app.ActivityThread.handleSendResult(ActivityThread.java:4964) E/AndroidRuntime(27099): at android.app.ActivityThread.access$1600(ActivityThread.java:221) E/AndroidRuntime(27099): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1848) E/AndroidRuntime(27099): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime(27099): at android.os.Looper.loop(Looper.java:158) E/AndroidRuntime(27099): at android.app.ActivityThread.main(ActivityThread.java:7225) E/AndroidRuntime(27099): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(27099): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) E/AndroidRuntime(27099): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) E/AndroidRuntime(27099): Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void java.lang.Runnable.run()' on a null object reference E/AndroidRuntime(27099): at co.apperto.fastqrreaderview.FastQrReaderViewPlugin$CameraRequestPermissionsListener.onRequestPermissionsResult(FastQrReaderViewPlugin.java:330) E/AndroidRuntime(27099): at io.flutter.app.FlutterPluginRegistry.onRequestPermissionsResult(FlutterPluginRegistry.java:194) E/AndroidRuntime(27099): at io.flutter.app.FlutterActivityDelegate.onRequestPermissionsResult(FlutterActivityDelegate.java:127) E/AndroidRuntime(27099): at io.flutter.app.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:137) E/AndroidRuntime(27099): at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7263) E/AndroidRuntime(27099): at android.app.Activity.dispatchActivityResult(Activity.java:7141)

ghost commented 5 years ago

I reverted to this commit e82f1a8bf4f596c21e2fe5801c4dd15942b5e67c and works!

szotp commented 5 years ago

Another workaround: await requestCameraPermission before await availableCameras.

bachbonglong commented 5 years ago

Another workaround: await requestCameraPermission before await availableCameras.

But if you click deny . CRASH appear and stop app

worawutt commented 4 years ago

Another workaround: await requestCameraPermission before await availableCameras.

But if you click deny . CRASH appear and stop app

There is PermissionStatus return from await requestCameraPermission, Check it before call availableCameras.

worawutt commented 4 years ago

Another workaround: await requestCameraPermission before await availableCameras.

for addition info that I found. await requestionCameraPermission is woking when use with Android 6.0 and above. If Android version below 6, No need to use it. Just call await availableCameras.

facundomedica commented 2 years ago

The example got fixed 👌