Stay organized with collections Save and categorize content based on your preferences.
syntaxe :
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:foregroundServiceType=["camera" | "connectedDevice" |
                                        "dataSync" | "location" | "mediaPlayback" |
                                        "mediaProjection" | "microphone" | "phoneCall"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    . . .
</service>
contenu dans :
<application>
peut contenir :
<intent-filter>
<meta-data>
description :
Déclare un service (une sous-classe Service) comme l'un des composants de l'application. Contrairement aux activités, les services ne disposent pas d'interface utilisateur visuelle. Ils sont utilisés pour implémenter des opérations de longue durée en arrière-plan ou une API de communications enrichies pouvant être appelée par d'autres applications.

Tous les services doivent être représentés par des éléments <service> dans le fichier manifeste. Ceux qui ne sont pas déclarés ne seront pas vus par le système et ne seront jamais exécutés.

Remarque : Sur Android version 8.0 (niveau d'API  26) ou ultérieure, le système restreint les possibilités de votre application lorsqu'elle s'exécute en arrière-plan. Pour en savoir plus, consultez les guides traitant des limites d'exécution en arrière-plan et des limites d'emplacement en arrière-plan.

attributs :
android:description
Chaîne décrivant le service aux utilisateurs. Le libellé doit être défini comme référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes dans l'interface utilisateur.
android:directBootAware

Indique si le service est compatible avec le démarrage direct, c'est-à-dire s'il peut être exécuté avant que l'utilisateur déverrouille l'appareil.

Remarque : Pendant le démarrage direct, un service de votre application ne peut accéder qu'aux données stockées dans l'espace de stockage protégé par l'appareil.

La valeur par défaut est "false".

android:enabled
Indique si le service peut être instancié ou non par le système : "true" s'il peut l'être et "false" dans le cas contraire. La valeur par défaut est "true".

L'élément <application> possède son propre attribut enabled qui s'applique à tous les composants d'application, y compris les services. Les attributs <application> et <service> doivent tous les deux être "true" (car ils sont par défaut) pour que le service puisse être activé. Si l'une des valeurs est "false", le service est désactivé et ne peut être instancié.

android:exported
Indique si les composants d'autres applications peuvent appeler le service ou interagir avec lui : "true" s'ils le peuvent et "false" dans le cas contraire. Lorsque la valeur est "false", seuls les composants de la même application ou des applications ayant le même ID utilisateur peuvent démarrer le service ou s'y associer.

La valeur par défaut varie selon que le service contient des filtres d'intent ou non. L'absence de filtres signifie qu'elle ne peut être appelée qu'en précisant son nom de classe exact. Cela implique que le service est destiné à un usage interne des applications uniquement (car les autres utilisateurs ne connaissent pas le nom de la classe). Dans ce cas, la valeur par défaut est "false". En revanche, la présence d'au moins un filtre implique que le service est destiné à un usage externe. La valeur par défaut est donc "true".

Cet attribut n'est pas le seul moyen de limiter l'exposition d'un service à d'autres applications. Vous pouvez également utiliser une autorisation pour limiter les entités externes pouvant interagir avec le service (voir l'attribut permission).

android:foregroundServiceType

Indiquez que le service est un service de premier plan répondant à un cas d'utilisation spécifique. Par exemple, un type de service de premier plan de "location" indique qu'une application dispose de la position actuelle de l'appareil, généralement pour continuer une action déclenchée par l'utilisateur en fonction de la position de l'appareil.

Vous pouvez attribuer plusieurs types de services de premier plan à un service particulier.

android:icon
Icône représentant le service. Cet attribut doit être défini comme référence à une ressource drawable contenant la définition de l'image. Si cette valeur n'est pas définie, l'icône spécifiée pour l'application dans son ensemble est utilisée à la place (consultez l'attribut icon de l'élément <application>).

L'icône du service, définie ici ou par l'élément <application>, est également l'icône par défaut de tous les filtres d'intent du service (voir l'attribut icon de l'élément <intent-filter>).

android:isolatedProcess
Si ce paramètre est défini sur "Vrai", ce service s'exécute selon un processus spécial qui est isolé du reste du système et ne dispose pas de ses propres autorisations. La seule communication avec lui s'effectue via l'API Service (liaison et démarrage).
android:label
Nom du service pouvant être affiché par les utilisateurs. Si cet attribut n'est pas défini, le libellé défini pour l'application dans son ensemble est utilisé à la place (consultez l'attribut label de l'élément <application>).

Le libellé du service, défini ici ou par l'élément <application>, est également le libellé par défaut de tous les filtres d'intent du service (voir l'attribut label de l'élément <intent-filter>).

Le libellé doit être défini comme une référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes de l'interface utilisateur. Toutefois, lorsque vous développez l'application, vous pouvez également le définir comme une chaîne brute.

android:name
Nom de la sous-classe Service qui implémente le service. Il doit s'agir d'un nom de classe complet (par exemple, "com.example.project.RoomService"). En revanche, par raccourci, si le premier caractère du nom est un point (par exemple, ".RoomService"), il est ajouté au nom du package spécifié dans l'élément <manifest>.

Une fois votre application publiée, vous ne devez pas modifier ce nom (sauf si vous avez défini android:exported="false").

Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.

android:permission
Nom d'une autorisation dont une entité doit disposer pour lancer le service ou s'y associer. Si un appelant de startService(), bindService() ou stopService() n'a pas reçu cette autorisation, cette méthode ne fonctionnera pas, et l'intent ne sera pas envoyé au service.

Si cet attribut n'est pas défini, l'autorisation définie par l'attribut permission de l'élément <application> s'applique au service. Si aucun attribut n'est défini, le service n'est pas protégé par une autorisation.

Pour en savoir plus sur les autorisations, consultez la section Autorisations de l'introduction et un autre document, intitulé Sécurité et autorisations.

android:process
Nom du processus dans lequel le service doit être exécuté. Normalement, tous les composants d'une application s'exécutent dans le processus par défaut créé pour celle-ci. Il porte le même nom que le package de l'application. L'attribut process de l'élément <application> peut définir une valeur par défaut différente pour tous les composants. Toutefois, un composant peut remplacer la valeur par défaut par son propre attribut process, ce qui vous permet de répartir votre application sur plusieurs processus.

Si le nom attribué à cet attribut commence par le caractère deux-points (:), un nouveau processus privé, créé pour l'application, est créé lorsque cela est nécessaire et que le service est exécuté au cours de ce processus. Si le nom du processus commence par une lettre minuscule, le service sera exécuté dans un processus global du même nom, à condition qu'il soit autorisé à le faire. Cela permet aux composants de différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

voir aussi :
<application>
<activity>
première apparition :
Niveau d'API 1