前台服务启动不允许异常。

4

我有一个问题。

Android 8.0引入了一个新的Context.startForegroundService()方法,可以在前台创建新的服务。

但是当我将目标版本更新到Android 12时,应用程序崩溃了。 错误是ForegroundServiceStartNotAllowedException。

我正在实现类似于Spotify或Apple Music的应用程序。

在目标版本设置为Android 12的应用程序中,不应该使用startForegroundService()吗? 我应该只使用startForeground()吗?

谢谢。

2个回答

6

1
从Android 12开始,应用程序在后台时不再允许启动前台服务。要在应用程序在后台时启动前台服务,您需要完成以下三个步骤:
  1. 在清单文件中声明服务类型为mediaPlaybackmediaProjectionphoneCall(只有这些类型才允许显示即时通知和启动服务)。
  2. 在清单文件中声明FOREGROUND_SERVICE_PHONE_CALLFOREGROUND_SERVICE_MEDIA_PROJECTIONFOREGROUND_SERVICE_MEDIA_PLAYBACK权限(编译SDK版本34)。
  3. 在服务的onCreate()onStartCommand()方法中,将FOREGROUND_SERVICE_TYPE_PHONE_CALLFOREGROUND_SERVICE_TYPE_MEDIA_PROJECTIONFOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK作为startForeGround()方法的第三个参数传递。
可能会有额外的运行时要求。有关服务类型的更多信息,请查看https://developer.android.com/guide/components/fg-service-types#phoneCall

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