capacitor-community / capacitor-community/background-geolocation
Failure delivering result ResultInfo{who=@android:requestPermissions
- Dominant language
- Java
- Stars
- 249
- Forks
- 79
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
When try to request background geo location, the app was crashed.
**To Reproduce**
Steps to reproduce the behavior:
1. Create ionic capacitor app.
2. install background geo location
3. add code given documentation
4. run the app on android
5. when start background geo location. the app was crashing.
**Expected behavior**
it should display the geo location
**Smartphone (please complete the following information):**
- Device: Redmi - Android 13
**Additional context**
Plugin Version : 1.2.15
FATAL EXCEPTION: main
Process: io.ionic.starter, PID: 20357
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=28351, result=0, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {io.ionic.starter/io.ionic.starter.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.getcapacitor.PluginCall.reject(java.lang.String)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:5452)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5491)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2284)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8302)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.getcapacitor.PluginCall.reject(java.lang.String)' on a null object reference
at com.getcapacitor.Plugin.handleRequestPermissionsResult(Plugin.java:903)
at com.equimaps.capacitor_background_geolocation.BackgroundGeolocation.handleRequestPermissionsResult(BackgroundGeolocation.java:149)
at com.getcapacitor.Bridge.onRequestPermissionsResult(Bridge.java:1065)
at com.getcapacitor.BridgeActivity.onRequestPermissionsResult(BridgeActivity.java:144)
at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8730)
at android.app.Activity.dispatchActivityResult(Activity.java:8583)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5445)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5491)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2284)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8302)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)
Contributor guide
Research direction
Start at BackgroundGeolocation.handleRequestPermissionsResult in BackgroundGeolocation.java, referenced at line 149 in the Android stack trace, and trace the permission-result flow through Capacitor's Plugin.handleRequestPermissionsResult. Reproduce the background location request on Android 13 using the listed steps; done means the permission result no longer crashes and the app displays geolocation as expected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100