为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2022-11-02 10:44:54
我最近开发了一个使用 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: 
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

Android 9 引入了新FOREGROUND_SERVICE权限。从文档

注意:面向 Android 9(API 级别 28)或更高版本并使用前台服务的应用必须请求 FOREGROUND_SERVICE 权限。这是一个正常的权限,因此系统会自动将其授予请求的应用程序。

如果针对 API 级别 28 或更高级别的应用尝试创建前台服务而不请求 FOREGROUND_SERVICE,则系统会引发 SecurityException。

只需将该权限添加到您的清单中,您就可以开始使用了。


查看完整回答
反对 回复 2022-11-02
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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");

            }


查看完整回答
反对 回复 2022-11-02
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信