In letzter Zeit haben wir plötzlich einige der folgenden Stapelspuren gesehen. Warum könnte das sein? Dies ist der Zeitpunkt, an dem die App versucht, einen Audiokommentar-Dienst mit einer Medienbenachrichtigung und allem in den Vordergrund zu rücken.
java.lang.SecurityException: Permission Denial: startForeground from pid=1824, uid=10479 requires android.permission.FOREGROUND_SERVICE
at android.os.Parcel.createException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1910)
at android.os.Parcel.readException(Parcel.java:1860)
at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:5198)
at android.app.Service.startForeground(Service.java:695)
at com.example.app.services.AudioService.setUpMediaNotification(AudioService.java:372)
at com.example.app.services.AudioService.setUpAndStartAudioFeed(AudioService.java:328)
at com.example.app.services.AudioService.onStartCommand(AudioService.java:228)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3667)
at android.app.ActivityThread.access$1600(ActivityThread.java:199)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
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:9186)
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:20434)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:976)
quelle
targetSdkVersion
Wert unter 28 liegt, keine Berechtigung zum Ausführen der Vordergrunddienste auf Geräten mit 28 benötigen?maxSdkVersion
.Apps, die auf Android 9 (API-Stufe 28) oder höher abzielen und Vordergrunddienste verwenden, müssen die anfordern
FOREGROUND_SERVICE permission
.Jetzt müssen wir die Berechtigung für den Vordergrunddienst in die Manifestdatei einfügen
Service.startForeground
STICHPROBE
Überprüfen Sie die Migrationshinweise von Android 9 / Pie
Lesen Sie auch
startForeground()
Build.VERSION_CODES.P
oder höher abzielen, müssen die Berechtigung anfordernManifest.permission.FOREGROUND_SERVICE
, um diese API verwenden zu können.quelle
Für API-Level 28 oder höher ist die Berechtigung FOREGROUND_SERVICE erforderlich. Andernfalls kann es nicht ausgeführt werden und hat eine Ausnahme erhalten.
Es wird durch Hinzufügen gelöst
in der Datei AndroidManifest.xml.
quelle
Eine
targetSdkVersion
von mindestens28
ist ab dem 1. November 2019 für App-Updates im Play Store obligatorisch. Sie müssen also die Ziel-API ändern und dann die Berechtigung anfordernFOREGROUND_SERVICE
, um den Absturz zu vermeidenstartForeground()
quelle