我的应用程序在 android 9 版本中不断崩溃并抛出

我最近开发了一个使用 URL 在线播放广播的 Android 应用程序。它在我在模拟器中测试的 6,7 和 8 的其他 android 版本中运行良好。


但上周我发布了该应用程序以播放商店,我的报告显示它在 android 9 手机中崩溃。它继续抛出 java.lang.SecurityException。我已经尝试了我能解决的错误,但我失败了。用户不断报告手机上的多个应用程序崩溃


这是来自播放控制台的堆栈跟踪


java.lang.RuntimeException: 

  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3903)

  at android.app.ActivityThread.access$1700 (ActivityThread.java:236)

  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1815)

  at android.os.Handler.dispatchMessage (Handler.java:106)

  at android.os.Looper.loop (Looper.java:214)

  at android.app.ActivityThread.main (ActivityThread.java:7032)

  at java.lang.reflect.Method.invoke (Native Method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

Caused by: java.lang.SecurityException: 

  at android.os.Parcel.createException (Parcel.java:1966)

  at android.os.Parcel.readException (Parcel.java:1934)

  at android.os.Parcel.readException (Parcel.java:1884)

  at android.app.IActivityManager$Stub$Proxy.setServiceForeground (IActivityManager.java:5043)

  at android.app.Service.startForeground (Service.java:695)

  at com.premar.radiomunabuddu.RadioMediaPlayerService.play (RadioMediaPlayerService.java:120)

  at com.premar.radiomunabuddu.RadioMediaPlayerService.onStartCommand (RadioMediaPlayerService.java:50)

  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3884)

Caused by: android.os.RemoteException: 



拉莫斯之舞
浏览 139回答 2
2回答

四季花海

Android 9 引入了新FOREGROUND_SERVICE权限。从文档:注意:面向 Android 9(API 级别 28)或更高版本并使用前台服务的应用必须请求 FOREGROUND_SERVICE 权限。这是一个正常的权限,因此系统会自动将其授予请求的应用程序。如果针对 API 级别 28 或更高级别的应用尝试创建前台服务而不请求 FOREGROUND_SERVICE,则系统会引发 SecurityException。只需将该权限添加到您的清单中,您就可以开始使用了。

qq_花开花谢_0

setServiceForegroundInnerLocked 方法会根据 targetSdkVersion 级别进行检查。缺少 FOREGROUND_SERVICE 权限代码:if (r.appInfo.targetSdkVersion >= Build.VERSION_CODES.P) {                mAm.enforcePermission(                        android.Manifest.permission.FOREGROUND_SERVICE,                        r.app.pid, r.appInfo.uid, "startForeground");            }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java