natsuk4ze / gal

How to Save Image or Video to Photo Gallery in Flutter
https://pub.dev/packages/gal
BSD 3-Clause "New" or "Revised" License
99 stars 15 forks source link

App crash on permission request from a different plugin #47

Closed Zazo032 closed 1 year ago

Zazo032 commented 1 year ago

Describe the bug When using this plugin with geolocator plugin, if we call geolocator's Geolocator.requestPermission(), the app crashes:

Logs

E/AndroidRuntime( 4651): Process: <elided>, PID: 4651
E/AndroidRuntime( 4651): java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=109, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {<elided>/io.flutter.embedding.android.FlutterActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.concurrent.CompletableFuture.complete(java.lang.Object)' on a null object reference
E/AndroidRuntime( 4651):    at android.app.ActivityThread.deliverResults(ActivityThread.java:5526)
E/AndroidRuntime( 4651):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:5565)
E/AndroidRuntime( 4651):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67)
E/AndroidRuntime( 4651):    at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
E/AndroidRuntime( 4651):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
E/AndroidRuntime( 4651):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
E/AndroidRuntime( 4651):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
E/AndroidRuntime( 4651):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 4651):    at android.os.Looper.loopOnce(Looper.java:205)
E/AndroidRuntime( 4651):    at android.os.Looper.loop(Looper.java:294)
E/AndroidRuntime( 4651):    at android.app.ActivityThread.main(ActivityThread.java:8176)
E/AndroidRuntime( 4651):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 4651):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E/AndroidRuntime( 4651):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E/AndroidRuntime( 4651): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.concurrent.CompletableFuture.complete(java.lang.Object)' on a null object reference
E/AndroidRuntime( 4651):    at studio.midoridesign.gal.GalPlugin.onRequestPermissionsResult(GalPlugin.java:212)
E/AndroidRuntime( 4651):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:781)
E/AndroidRuntime( 4651):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:413)
E/AndroidRuntime( 4651):    at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onRequestPermissionsResult(FlutterActivityAndFragmentDelegate.java:820)
E/AndroidRuntime( 4651):    at io.flutter.embedding.android.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:941)
E/AndroidRuntime( 4651):    at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:9089)
E/AndroidRuntime( 4651):    at android.app.Activity.dispatchActivityResult(Activity.java:8947)
E/AndroidRuntime( 4651):    at android.app.ActivityThread.deliverResults(ActivityThread.java:5519)
E/AndroidRuntime( 4651):    ... 13 more
I/Process ( 4651): Sending signal. PID: 4651 SIG: 9

Smartphone (Optional):

natsuk4ze commented 1 year ago

hmm. still investigating, but may have found the cause in gal.

Looks like this Baseflow/flutter-geolocator#1230.

natsuk4ze commented 1 year ago

@Zazo032 I have released 1.6.3 🎉. Could you try it?

Zazo032 commented 1 year ago

@natsuk4ze thanks for the quick fix! It's working fine now 😄