Android prend en charge plusieurs utilisateurs sur un même appareil Android en séparant les comptes utilisateur et les données des applications. Par exemple, les parents peuvent autoriser leurs enfants à utiliser la tablette familiale, une famille peut partager une voiture ou une équipe d'intervention d'urgence peut partager un appareil mobile pour les astreintes.
Terminologie
Android utilise les termes suivants pour décrire les utilisateurs et les comptes Android.
Général
La gestion des appareils Android utilise les termes généraux suivants:
- Utilisateur:chaque utilisateur est destiné à être utilisé par une personne physique différente. Chaque utilisateur dispose de données d'application distinctes et de certains paramètres uniques, ainsi que d'une interface utilisateur permettant de passer explicitement d'un utilisateur à un autre. Un utilisateur peut s'exécuter en arrière-plan lorsqu'un autre utilisateur est actif. Le système gère l'arrêt des utilisateurs pour économiser des ressources lorsque cela est approprié. Vous pouvez créer des utilisateurs secondaires directement via l'interface utilisateur ou à partir d'une application Administration des appareils.
- Compte:les comptes sont inclus dans un utilisateur, mais ne sont pas définis par lui. Un utilisateur n'est pas défini par un compte donné ni associé à celui-ci. Les utilisateurs et les profils contiennent leurs propres comptes uniques, mais ils ne sont pas obligés d'en avoir pour fonctionner. La liste des comptes diffère selon l'utilisateur. Pour en savoir plus, consultez la définition de la classe Account.
- Profil:un profil sépare les données des applications, mais partage certains paramètres système (par exemple, le Wi-Fi et le Bluetooth). Un profil est un sous-ensemble de l'existence d'un utilisateur et est lié à celle-ci. Un utilisateur peut disposer de plusieurs profils. Les profils sont créés via une application Administration des appareils. Un profil est toujours associé de manière immuable à un utilisateur parent, défini par l'utilisateur qui a créé le profil. Les profils n'existent pas au-delà de la durée de vie de l'utilisateur qui les a créés.
- Application:les données d'une application existent pour chaque utilisateur associé. Les données de l'application sont isolées des autres applications du même utilisateur. Les applications d'un même utilisateur peuvent interagir entre elles via l'IPC. Pour en savoir plus, consultez Android pour les entreprises.
Catégories d'utilisateurs
L'administration des appareils Android utilise les catégories d'utilisateurs suivantes.
- Utilisateur système:premier utilisateur ajouté à un appareil. L'utilisateur système ne peut être supprimé que par une réinitialisation d'usine et est toujours en cours d'exécution, même lorsque d'autres utilisateurs sont au premier plan. Cet utilisateur dispose également de privilèges et de paramètres spéciaux qu'il est le seul à pouvoir définir.
- Utilisateur système headless:premier utilisateur ajouté à un appareil si celui-ci est configuré pour s'exécuter en mode utilisateur système headless (en définissant
ro.fw.mu.headless_system_user=true
). L'utilisateur système headless s'exécute toujours en arrière-plan. Par conséquent, ces appareils nécessitent des utilisateurs de premier plan supplémentaires pour permettre une interaction utilisateur. - Utilisateur secondaire:tout utilisateur ajouté à l'appareil en dehors de l'utilisateur système. Les utilisateurs secondaires peuvent être supprimés (par eux-mêmes ou par un utilisateur administrateur) et ne peuvent pas avoir d'incidence sur les autres utilisateurs d'un appareil. Ces utilisateurs peuvent s'exécuter en arrière-plan et continuer à disposer d'une connectivité réseau.
- Utilisateur invité:utilisateur secondaire temporaire. Les utilisateurs invités ont la possibilité explicite de supprimer rapidement l'utilisateur invité lorsque son utilité est terminée. Il ne peut y avoir qu'un seul utilisateur invité à la fois.
- Utilisateur administrateur:utilisateur autorisé à créer et à supprimer d'autres utilisateurs, ainsi qu'à contrôler certains paramètres multi-utilisateurs généraux. Par défaut, seul l'utilisateur système est administrateur.
Catégories de profils
Android utilise les catégories de profils suivantes:
- Profil géré:profil créé par une application pour contenir des données et des applications professionnelles. Ils sont gérés exclusivement par le propriétaire du profil (l'application qui a créé le profil d'entreprise). Le lanceur d'applications, les notifications et les tâches récentes sont partagés par l'utilisateur parent et le profil professionnel.
- Profil limité:utilise des comptes basés sur l'utilisateur parent, qui peut contrôler les applications disponibles sur le profil limité. Disponible uniquement sur les tablettes et les téléviseurs.
- Profil de clonage:Android permet de créer un type d'utilisateur de profil de clonage distinct pour permettre l'exécution de deux instances d'une même application sur l'appareil. AOSP ne fournit pas de prise en charge de bout en bout de cette fonctionnalité. Les OEM doivent ajouter des personnalisations pour proposer la fonctionnalité complète aux utilisateurs Android.
- Profil privé:espace en bac à sable distinct du reste de l'appareil, qui peut être verrouillé indépendamment de l'utilisateur principal. Un profil privé ne peut exister que pour l'utilisateur principal. Lorsque le profil privé est déverrouillé, les applications deviennent visibles dans les paramètres, ShareSheet, le sélecteur de photos et l'interface utilisateur de Docs, mais elles sont masquées lorsqu'elles sont verrouillées. Le profil privé peut coexister sur le même appareil avec le profil professionnel et le profil clone.
Types d'utilisateurs
Android 11 a formulé la classification ci-dessus des utilisateurs et des profils en types d'utilisateurs bien définis, représentant tous les différents types d'utilisateurs et de profils autorisés par la fonctionnalité multi-utilisateur d'Android.
Les types d'utilisateurs AOSP prédéfinis sont définis dans frameworks/base/core/java/android/os/UserManager.java
et incluent actuellement les éléments suivants:
android.os.usertype.full.SYSTEM
android.os.usertype.full.SECONDARY
android.os.usertype.full.GUEST
android.os.usertype.full.DEMO
android.os.usertype.full.RESTRICTED
android.os.usertype.profile.MANAGED
android.os.usertype.system.HEADLESS
android.os.usertype.profile.CLONE
android.os.usertype.profile.PRIVATE
Les OEM peuvent configurer ces types d'utilisateurs en superposant le fichier frameworks/base/core/res/res/xml/config_user_types.xml
.
Cela permet de modifier facilement la configuration par défaut de chaque type d'utilisateur, y compris ses restrictions, icônes, badges et nombre maximal d'utilisateurs autorisés par défaut.
En plus des types d'utilisateurs AOSP configurables, les OEM peuvent définir de nouveaux types de profils à l'aide du fichier frameworks/base/core/res/res/xml/config_user_types.xml
.
Les OEM peuvent ainsi proposer leurs propres types de profils non gérés, si nécessaire.
Toutefois, il incombe à l'OEM d'apporter les modifications nécessaires à la plate-forme pour prendre en charge les modifications, y compris de modifier tout code qui recherche des profils gérés pour gérer désormais le nouveau type de profil, le cas échéant.
Activer la fonctionnalité multi-utilisateur
La fonctionnalité multi-utilisateur est désactivée par défaut. Pour activer cette fonctionnalité, les fabricants d'appareils doivent définir une superposition de ressources qui remplace les valeurs suivantes dans frameworks/base/core/res/res/values/config.xml
:
<!-- Maximum number of supported users --> <integer name="config_multiuserMaximumUsers">1</integer> <!-- Whether Multiuser UI should be shown --> <bool name="config_enableMultiUserUI">false</bool>
Pour appliquer cette superposition et activer les utilisateurs invités et secondaires sur l'appareil, utilisez la fonctionnalité DEVICE_PACKAGE_OVERLAYS
du système de compilation Android pour remplacer les valeurs suivantes:
config_multiuserMaximumUsers
avec une valeur supérieure à1
config_enableMultiUserUI
avectrue
Les fabricants d'appareils peuvent décider du nombre maximal d'utilisateurs. Si les fabricants d'appareils ou d'autres personnes ont modifié les paramètres, ils doivent s'assurer que les SMS et la téléphonie fonctionnent comme défini dans le document de définition de la compatibilité Android (CDD).
Gérer plusieurs utilisateurs
La gestion des utilisateurs et des profils (à l'exception des profils restreints) est effectuée par des applications qui appellent de manière programmatique l'API dans la classe DevicePolicyManager
pour limiter l'utilisation.
Les entreprises peuvent utiliser des utilisateurs et des profils pour gérer la durée de vie et la portée des applications et des données sur les appareils, en utilisant les types décrits ci-dessus en conjonction avec les API DevicePolicyManager et UserManager pour créer des solutions uniques adaptées à leurs cas d'utilisation.
Comportement du système multi-utilisateur
Lorsque des utilisateurs sont ajoutés à un appareil, certaines fonctionnalités sont limitées lorsqu'un autre utilisateur est au premier plan. Étant donné que les données des applications sont séparées par utilisateur, l'état de ces applications varie d'un utilisateur à l'autre. Par exemple, les e-mails destinés à un compte d'un utilisateur qui n'est pas actuellement sélectionné ne seront disponibles que lorsque cet utilisateur et son compte seront actifs sur l'appareil.
Remarque: Pour activer ou désactiver les fonctions téléphone et SMS pour un utilisateur secondaire, accédez à Paramètres > Utilisateurs, sélectionnez l'utilisateur, puis désactivez l'option Autoriser les appels téléphoniques et les SMS.
Certaines restrictions s'appliquent lorsqu'un utilisateur secondaire est en arrière-plan. Par exemple, l'utilisateur secondaire en arrière-plan ne peut pas afficher l'interface utilisateur ni activer les services Bluetooth. De plus, le processus système arrête les utilisateurs secondaires en arrière-plan si l'appareil a besoin de mémoire supplémentaire pour les opérations de l'utilisateur au premier plan.
Lorsque vous utilisez plusieurs utilisateurs sur un appareil Android, tenez compte du comportement suivant:
- Les notifications s'affichent pour tous les comptes d'un même utilisateur en même temps.
- Les notifications pour les autres utilisateurs ne s'affichent que lorsqu'elles sont actives.
- Chaque utilisateur dispose d'un espace de travail pour installer et placer des applications.
- Aucun utilisateur n'a accès aux données d'application d'un autre utilisateur.
- N'importe quel utilisateur peut modifier les applications installées pour tous les utilisateurs.
- Un utilisateur administrateur peut supprimer des applications ou même l'ensemble de l'espace de travail créé par des utilisateurs secondaires.
- Par défaut, les informations d'une session utilisateur invité ne sont pas conservées lorsque vous quittez le mode invité.
Si vous souhaitez que les informations d'une session utilisateur invité persistent, vous devez créer un fichier de superposition de ressources qui définit
config_guestUserAllowEphemeralStateChange
surfalse
. Pour en savoir plus sur la création de fichiers de superposition, consultez la section Personnaliser la compilation avec des superpositions de ressources.
Multi-utilisateur Android Automotive
Android Automotive s'appuie sur l'implémentation multi-utilisateur d'Android pour offrir une expérience d'appareil partagée.
Types d'utilisateurs automobiles
En plus des types d'utilisateurs listés ci-dessus, les builds pour l'automobile sont particulièrement adaptés aux utilisateurs suivants:
- Utilisateur du système headless L'utilisateur système héberge tous les services système.
Pour prendre en charge plusieurs utilisateurs dans Automotive, l'utilisateur du système doit également être sans tête.
Il n'y a qu'un seul utilisateur headless. Un utilisateur système headless :
- Doit toujours s'exécuter en arrière-plan.
- Ne peuvent pas être supprimés ni consultés directement par l'utilisateur, sauf dans le cas du provisionnement de l'appareil. Par exemple, les utilisateurs ne peuvent pas passer à ce type d'utilisateur pour effectuer des tâches telles que télécharger des applications ou ajouter des comptes.
- Ne peut être supprimé qu'en rétablissant la configuration d'usine.
- Utilisateurs réguliers Il s'agit des mêmes droits que les utilisateurs secondaires décrits ci-dessus, à l'exception des points suivants :
- Ne s'exécute pas en arrière-plan (après avoir été désactivé).
- peuvent être créés directement via l'interface utilisateur ;
- avoir des données d'application distinctes, mais partager certains paramètres à l'échelle du système ; (par exemple, le Wi-Fi et le Bluetooth)
Mises en garde
Les exceptions suivantes s'appliquent aux utilisateurs système sans tête et aux utilisateurs standards (secondaires) dans Automotive:
- L'utilisateur du système headless n'est pas compatible avec les profils professionnels.
- Par défaut, les utilisateurs réguliers (secondaires) ont un accès complet aux appels téléphoniques et aux SMS.
- Par défaut, les utilisateurs standards (secondaires) ne s'exécutent pas en arrière-plan.
Activer l'utilisateur système headless
À partir d'Android 10, la fonctionnalité multi-utilisateur peut être utilisée pour les cas d'utilisation automobile. Voici quelques distinctions importantes:
- L'utilisateur système est sans tête et ne s'exécute qu'en arrière-plan.
- Les utilisateurs humains n'interagissent pas avec l'utilisateur système.
Pour activer l'utilisateur système sans tête, les fabricants d'appareils doivent activer le multi-utilisateur comme décrit ci-dessus.
Lorsque l'utilisateur headless est activé :- Pour déclarer l'appareil comme étant Automotive, ajoutez la fonctionnalité
android.hardware.type.automotive
. - Définissez
ro.fw.headless_system_user
surtrue
. - Définissez la valeur de
config_multiuserMaximumUsers
sur2
(ou plus).
Pour en savoir plus, consultez la section Compatibilité avec plusieurs utilisateurs dans Automotive.
Multi-utilisateur Android Automotive sur plusieurs écrans
Android 15 permet aux utilisateurs secondaires complets (qui ne sont pas l'utilisateur de premier plan actuel) de lancer des activités et d'accéder à l'UI sur l'écran auquel ils sont attribués. Cette fonctionnalité permet à plusieurs utilisateurs simultanés dans Android Automotive OS de prendre en charge des expériences dans la voiture qui offrent à plusieurs passagers une expérience d'UI dédiée dans une seule instance Android.
Pour activer cette fonctionnalité, les fabricants d'appareils doivent définir une superposition de ressources pour remplacer la valeur suivante dans frameworks/base/core/res/res/values/config.xml
:
<!-- Whether the device allows full users to start in background visible on displays. Should be false for most devices, except automotive vehicle with passenger displays. Note: this flag does NOT control the Communal Profile, which is not a full user. --> <bool name="config_multiuserVisibleBackgroundUsers">false></bool>
Vous pouvez tester une expérience réservée aux passagers (sans conducteur) en activant la configuration supplémentaire suivante:
<!-- Whether the device allows users to start in background visible on the default display. Should be false for all devices in production. Can be enabled only for development use in passenger-only automotive build (i.e., when Android runs in a separate system in the back seat to manage the passenger displays). When set to true, config_multiuserVisibleBackgroundUsers must also be true. --> <bool name="config_multiuserVisibleBackgroundUsersOnDefaultDisplay">false</bool>
Dans Android 15, vous pouvez également activer l'expérience dans la voiture pour plusieurs passagers en tant qu'utilisateurs invités. Pour activer plusieurs utilisateurs invités à des fins de développement, les fabricants d'appareils doivent définir une superposition de ressources qui configure le nombre maximal d'utilisateurs invités autorisé dans frameworks/base/core/res/res/xml/config_user_types.xml
, comme dans cet exemple:
<user-types> <full-type name="android.os.usertype.full.GUEST" max-allowed='4'> <default-restrictions no_factory_reset="true" no_remove_user="true" no_modify_accounts="true" no_install_apps="true" no_install_unknown_sources="true" no_uninstall_apps="true"/> </full-type> </user-types>