Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

NullPointerException com.mapbox.android.telemetry.TelemetryService.locationPermissionCheck #12904

Closed
nijs9 opened this issue Sep 17, 2018 · 7 comments
Labels
Android Mapbox Maps SDK for Android telemetry Integration with Mapbox Telemetry libraries

Comments

@nijs9
Copy link

nijs9 commented Sep 17, 2018

Since upgrading to mapbox sdk 6.4.0, users with Android 4 or 5 are getting this exception:

java.lang.RuntimeException: at android.app.ActivityThread.handleCreateService (ActivityThread.java:2828) at android.app.ActivityThread.access$1800 (ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1365) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5590) at java.lang.reflect.Method.invokeNative (Native Method) at java.lang.reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1084) at dalvik.system.NativeStart.main (Native Method) Caused by: java.lang.NullPointerException: at android.support.v4.content.PermissionChecker.checkSelfPermission (PermissionChecker.java:134) at com.mapbox.android.telemetry.TelemetryService.locationPermissionCheck (TelemetryService.java:279) at com.mapbox.android.telemetry.TelemetryService.connectLocationEngine (TelemetryService.java:181) at com.mapbox.android.telemetry.TelemetryService.registerLocationReceiver (TelemetryService.java:171) at com.mapbox.android.telemetry.TelemetryService.createLocationReceiver (TelemetryService.java:167) at com.mapbox.android.telemetry.TelemetryService.onCreate (TelemetryService.java:47) at android.app.ActivityThread.handleCreateService (ActivityThread.java:2818)

Steps to reproduce

  1. Start mapbox map in Android 4 of 5

Expected behavior

Map is shown

Actual behavior

NullPointer Exception generated

Configuration

Android versions: 4 and 5
Device models:
Mapbox SDK versions: 6.4.0

@LukasPaczos LukasPaczos added Android Mapbox Maps SDK for Android telemetry Integration with Mapbox Telemetry libraries labels Sep 17, 2018
@LukasPaczos
Copy link
Member

Thanks for reporting the issue @nijs9. Would you be able to provide a list of devices you are seeing the crashes on? I have no issues with the Xperia Z1 running 5.1.1.

/cc @andrlee @electrostat

@nijs9
Copy link
Author

nijs9 commented Sep 18, 2018

Hi @LucasPaczos. Here are some devices which crashes with this issue:

Galaxy S4 (jfvelte)
Galaxy J3(2016) (j3xlte)
Galaxy Tab E 9.6 (gtelwifi)
Galaxy Ace Style (heatqlte)
Doro 8031 (DSB0010)
E5504 (B5530)
Galaxy Tab4 10.1
Galaxy Core Prime (coreprimevelte)
Galaxy Tab3 8.0 (lt01wifih)
Xperia™ C4 (E5303)
Galaxy Note3 (hlte)
Honor 5A (HWLYO-L6735)

@electrostat
Copy link

I've tested this as well on a 5.1 device with no issues while triggering the PermissionsManager. @nijs9 is there anything in common amongst these devices? I haven't been able to fine one, but wanted to check to see if there is something I am missing. I will keep digging and looking for the root of the problem.

@tan-tran-viet-xx
Copy link

I got the same error, this is my logs:

Device: Samsung Galaxy Note5
Android Version: 5.1.1
Device states: 100% background
Orientation: Portrait
Rooted: No

I'm using Mapbox Navigation, UI: 0.21.0 and it includes Mapbox Map ...

Logs:

Fatal Exception: java.lang.RuntimeException: Unable to create service com.mapbox.android.telemetry.TelemetryService: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
       at android.app.ActivityThread.handleCreateService(ActivityThread.java:3700)
       at android.app.ActivityThread.access$2000(ActivityThread.java:197)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:145)
       at android.app.ActivityThread.main(ActivityThread.java:6891)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
       at android.support.v4.content.PermissionChecker.checkPermission(Unknown Source)
       at com.mapbox.android.telemetry.TelemetryService.locationPermissionCheck(Unknown Source)
       at com.mapbox.android.telemetry.TelemetryService.connectLocationEngine(Unknown Source)
       at com.mapbox.android.telemetry.TelemetryService.registerLocationReceiver(Unknown Source)
       at com.mapbox.android.telemetry.TelemetryService.createLocationReceiver(Unknown Source)
       at com.mapbox.android.telemetry.TelemetryService.onCreate(Unknown Source)
       at android.app.ActivityThread.handleCreateService(ActivityThread.java:3690)
       at android.app.ActivityThread.access$2000(ActivityThread.java:197)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:145)
       at android.app.ActivityThread.main(ActivityThread.java:6891)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

@tan-tran-viet-xx
Copy link

private boolean locationPermissionCheck() {
    if (Build.VERSION.SDK_INT >= API_LEVEL_23) {
      return PermissionsManager.areLocationPermissionsGranted(this);
    } else {
      int coarsePermission = PermissionChecker.checkSelfPermission(MapboxTelemetry.applicationContext,
        Manifest.permission.ACCESS_COARSE_LOCATION);
      int finePermission = PermissionChecker.checkSelfPermission(MapboxTelemetry.applicationContext,
        Manifest.permission.ACCESS_FINE_LOCATION);

      return coarsePermission == PackageManager.PERMISSION_GRANTED
        || finePermission == PackageManager.PERMISSION_GRANTED;
    }
}

The crash is from this method, when MapboxTelemetry.applicationContext is null. But I'm not sure why do we need to check for location permission for api < 23 and use a different method and context for checking permission

@andrlee
Copy link
Contributor

andrlee commented Oct 19, 2018

fixed with mapbox/mapbox-events-android#241

@andrlee andrlee closed this as completed Oct 19, 2018
@LukasPaczos
Copy link
Member

@andrlee let's keep this one open unitl the telemetry version that includes a fix lands on master.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Android Mapbox Maps SDK for Android telemetry Integration with Mapbox Telemetry libraries
Projects
None yet
Development

No branches or pull requests

5 participants