Déclarer des services de premier plan et demander des autorisations
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Dans le fichier manifeste de votre application, déclarez chacun de ses services de premier plan avec un élément <service>
. Pour chaque service, utilisez un attribut android:foregroundServiceType
pour déclarer le type de travail effectué par le service.
Demandez également les autorisations nécessaires à vos services de premier plan.
Compatibilité des versions
Les exigences concernant la déclaration de vos services de premier plan et la demande d'autorisations varient en fonction du niveau d'API ciblé par votre application. Cette page décrit les exigences pour les applications qui ciblent le niveau d'API 34 ou supérieur. Pour en savoir plus sur les modifications apportées aux services de premier plan dans les versions antérieures de la plate-forme, consultez Modifications apportées aux services de premier plan.
Déclarer les services de premier plan dans le fichier manifeste de l'application
Le code suivant montre comment déclarer un service de premier plan de lecture multimédia.
Vous pouvez utiliser un service de ce type pour écouter de la musique.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
Points clés concernant le code
Dans cet exemple, le service ne comporte qu'un seul type, media
. Si plusieurs types s'appliquent à votre service, séparez-les avec l'opérateur |
. Par exemple, si votre service utilise la caméra et le micro, déclarez-le comme suit :
android:foregroundServiceType="camera|microphone"
Selon le niveau d'API ciblé par votre application, vous devrez peut-être déclarer les services de premier plan dans le fichier manifeste de l'application. Les exigences pour les niveaux d'API spécifiques sont décrites dans Modifications apportées aux services de premier plan.
Si vous essayez de créer un service de premier plan et que son type n'est pas déclaré dans le fichier manifeste, le système génère une erreur MissingForegroundServiceTypeException
lors de l'appel de startForeground()
.
Même si ce n'est pas obligatoire, il est recommandé de déclarer tous vos services de premier plan et de fournir leurs types de services.
Demander les autorisations pour le service de premier plan
Le code suivant montre comment demander des autorisations pour un service de premier plan qui utilise l'appareil photo.
<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>
Points clés concernant le code
- Ce code utilise les bonnes pratiques pour une application qui cible le niveau d'API 34 ou supérieur.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/08/27 (UTC)."],[],[],null,["In your app's manifest, declare each of your app's foreground services\nwith a [`\u003cservice\u003e`](/guide/topics/manifest/service-element)\nelement. For each service, use an\n[`android:foregroundServiceType` attribute](/develop/background-work/services/fgs/service-types)\nto declare what kind of work the service does.\n\nIn addition, request any permissions needed by your foreground services.\n| **Important:** All foreground service declarations must comply with the requirements in the [Google Play Device and Network Abuse policy](https://support.google.com/googleplay/android-developer/answer/9888379) and the Google Play [Understanding foreground service requirements\n| documentation](https://support.google.com/googleplay/android-developer/answer/13392821).\n\nVersion compatibility\n\nThe requirements for declaring your foreground services and requesting\npermissions vary depending on what API level your app targets. This page\ndescribes the requirements for apps that target API level 34 or higher. For\ninformation about changes to foreground services in earlier platform versions,\nsee [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\nDeclare foreground services in the app manifest\n\nThe following code shows how to declare a media playback foreground service.\nYou might use a service like this to play music. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n \u003capplication ...\u003e\n\n \u003cservice\n android:name=\".MyMediaPlaybackService\"\n android:foregroundServiceType=\"mediaPlayback\"\n android:exported=\"false\"\u003e\n \u003c/service\u003e\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- In this example, the service has only one type, `media`. If\n multiple types apply to your service, separate them with the `|`\n operator. For example, if your service uses the camera and microphone,\n declare it like this:\n\n android:foregroundServiceType=\"camera|microphone\"\n\n- Depending on what API level your app targets, you may be\n **required** to declare foreground services in the app\n manifest. The requirements for specific API levels are described in\n [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\n If you try to create a foreground service and its type isn't declared\n in the manifest, the system throws a\n [`MissingForegroundServiceTypeException`](/reference/android/app/MissingForegroundServiceTypeException)\n upon calling `startForeground()`.\n\n Even when it isn't required, it's a best practice to declare\n all your foreground services and provide their service types.\n\nRequest the foreground service permissions\n\nThe following code shows how to request permissions for a foreground\nservice that uses the camera. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/\u003e\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE_CAMERA\"/\u003e\n\n \u003capplication ...\u003e\n ...\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- This code uses best practices for an app that targets API level 34 or higher."]]