在应用的清单中,使用 <service>
元素声明应用的每项前台服务。对于每项服务,请使用 android:foregroundServiceType
属性声明该服务执行的工作类型。
此外,请请求前台服务所需的所有权限。
版本兼容性
声明前台服务和请求权限的要求因应用的目标 API 级别而异。本页介绍了以 API 级别 34 或更高级别为目标平台的应用应遵循的要求。如需了解早期平台版本中前台服务的变更,请参阅前台服务变更。
在应用清单中声明前台服务
以下代码展示了如何声明媒体播放前台服务。您可以使用此类服务来播放音乐。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
代码要点
在此示例中,服务只有一种类型,即
media
。如果您的服务适用于多种类型,请使用|
运算符将它们分隔开来。例如,如果您的服务使用摄像头和麦克风,请按如下方式声明:android:foregroundServiceType="camera|microphone"
根据应用的目标 API 级别,您可能需要在应用清单中声明前台服务。对前台服务的更改中介绍了特定 API 级别的要求。
如果您尝试创建前台服务,但其类型未在清单中声明,系统会在调用
startForeground()
时抛出MissingForegroundServiceTypeException
。即使不是必需的,最好也声明所有前台服务并提供其服务类型。
请求前台服务权限
以下代码展示了如何为使用相机的前台服务请求权限。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
<application ...>
...
</application>
</manifest>
代码要点
- 此代码采用了针对以 API 级别 34 或更高级别为目标平台的应用的最佳实践。