В манифесте приложения объявите каждую активную службу с помощью элемента <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 или выше.