Dienste im Vordergrund deklarieren und Berechtigungen anfordern

Deklarieren Sie im Manifest Ihrer App jeden Dienst im Vordergrund Ihrer App mit einem <service>-Element. Verwenden Sie für jeden Dienst ein android:foregroundServiceType-Attribut, um zu deklarieren, welche Art von Arbeit der Dienst ausführt.

Fordern Sie außerdem alle Berechtigungen an, die für Ihre Dienste im Vordergrund erforderlich sind.

Versionskompatibilität

Die Anforderungen für die Deklaration von Diensten im Vordergrund und das Anfordern von Berechtigungen variieren je nach Ziel-API-Level Ihrer App. Auf dieser Seite werden die Anforderungen für Apps beschrieben, die auf API-Level 34 oder höher ausgerichtet sind. Informationen zu Änderungen an Diensten im Vordergrund in früheren Plattformversionen finden Sie unter Änderungen an Diensten im Vordergrund.

Dienste im Vordergrund im App-Manifest deklarieren

Der folgende Code zeigt, wie ein Dienst im Vordergrund für die Medienwiedergabe deklariert wird. Du kannst einen solchen Dienst verwenden, um Musik abzuspielen.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
  <application ...>

    <service
        android:name=".MyMediaPlaybackService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="false">
    </service>
  </application>
</manifest>

Wichtige Punkte zum Code

  • In diesem Beispiel hat der Dienst nur einen Typ, media. Wenn für Ihren Dienst mehrere Typen gelten, trennen Sie sie durch den Operator |. Wenn Ihr Dienst beispielsweise die Kamera und das Mikrofon verwendet, deklarieren Sie ihn so:

    android:foregroundServiceType="camera|microphone"
    
  • Je nachdem, auf welches API-Level Ihre App ausgerichtet ist, müssen Sie möglicherweise Dienste im Vordergrund im App-Manifest deklarieren. Die Anforderungen für bestimmte API-Level werden unter Änderungen an Diensten im Vordergrund beschrieben.

    Wenn Sie versuchen, einen Dienst im Vordergrund zu erstellen, dessen Typ nicht im Manifest deklariert ist, löst das System beim Aufrufen von startForeground() eine MissingForegroundServiceTypeException aus.

    Auch wenn es nicht erforderlich ist, empfiehlt es sich, alle Dienste im Vordergrund zu deklarieren und ihre Diensttypen anzugeben.

Berechtigungen für Dienste im Vordergrund anfordern

Der folgende Code zeigt, wie Sie Berechtigungen für einen Dienst im Vordergrund anfordern, der die Kamera verwendet.

<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>

Wichtige Punkte zum Code

  • In diesem Code werden Best Practices für eine App verwendet, die auf API-Level 34 oder höher ausgerichtet ist.