Skip to content

Foreground permission required in manifest for Android 9 / API 28 #1611

@DejanRistic

Description

@DejanRistic

Android API: 28 (Android 9)
Mapbox Navigation SDK version: 0.24.0

Steps to trigger behavior

  1. Starting navigation activity via the launcher

Expected behavior

  • No crash / error

Actual behavior

  • Crashes due to a missing permission.

Looks like the migration guide for api 28 states that a foreground permission is necessary for foreground services now.

https://developer.android.com/about/versions/pie/android-9.0-migration#tya

Its not considered a dangerous permission so adding the permission to the manifest fixed the issue, just wanted to give you guys the heads up in case you wanna add it to any getting started guides/sample app.

stack trace:

    java.lang.SecurityException: Permission Denial: startForeground from pid=23263, uid=10259 requires android.permission.FOREGROUND_SERVICE
        at android.os.Parcel.createException(Parcel.java:1950)
        at android.os.Parcel.readException(Parcel.java:1918)
        at android.os.Parcel.readException(Parcel.java:1868)
        at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:5198)
        at android.app.Service.startForeground(Service.java:695)
        at com.mapbox.services.android.navigation.v5.navigation.NavigationService.startForegroundNotification(NavigationService.java:130)
        at com.mapbox.services.android.navigation.v5.navigation.NavigationService.startNavigation(NavigationService.java:66)
        at com.mapbox.services.android.navigation.v5.navigation.MapboxNavigation.onServiceConnected(MapboxNavigation.java:727)
        at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1730)
        at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1762)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6680)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.am.ActivityManagerService.enforcePermission(ActivityManagerService.java:9189)
        at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked(ActiveServices.java:1189)
        at com.android.server.am.ActiveServices.setServiceForegroundLocked(ActiveServices.java:870)
        at com.android.server.am.ActivityManagerService.setServiceForeground(ActivityManagerService.java:20458)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:976)

Metadata

Metadata

Assignees

Labels

bugDefect to be fixed.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions