java.lang.SecurityException: 权限拒绝:startForeground Android 9.0 Pie API 28

10

我的应用在 Android 版本 27 以前都很正常。但是我发现在 Android 9.0 Pie,API 28 中出现了这个异常。

这是异常信息的追踪记录。

java.lang.RuntimeException: Unable to create service com.example.demo: java.lang.SecurityException: Permission Denial: startForeground from pid=21535, uid=10088 requires android.permission.FOREGROUND_SERVICE
        at android.app.ActivityThread.handleCreateService(ActivityThread.java:3544)
        at android.app.ActivityThread.access$1300(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1666)
        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)
1个回答

25

文档开始

您需要在AndroidManifest.xml文件中添加此权限,无需处理任何权限检查。它将始终被授予。

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

2
问题已经解决,谢谢。Google根本不关心向后兼容性。在这种情况下,他们本可以只需请求用户权限,而不是让应用程序崩溃。 - Oleg Gryb
1
没错,他们确实关心。如果他们不关心,他们就不会让用户运行你的旧代码了。但是,作为一个程序员,在重建和针对新平台时,你有责任清理你的代码,以使你的代码符合新要求。 - deLock
两个大拇指,一个是为了答案,另一个是为了提供在Android文档中找到答案的方法。 - Shawn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接