Prise en charge de plusieurs utilisateurs

Android prend en charge plusieurs utilisateurs sur un seul appareil Android en séparant les comptes d'utilisateurs et les données d'application. Par exemple, les parents peuvent autoriser leurs enfants à utiliser la tablette familiale, une famille peut partager une automobile ou une équipe d'intervention critique peut partager un appareil mobile pour des tâches de garde.

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 paramètres uniques, ainsi que d'une interface utilisateur permettant de basculer explicitement entre les utilisateurs. 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 conserver les ressources le cas échéant. Les utilisateurs secondaires peuvent être créés soit directement via l'interface utilisateur, soit à partir d'une application d'administration de périphériques .
  • Compte : les comptes sont contenus dans un utilisateur mais ne sont pas définis par un utilisateur, et un utilisateur n'est pas non plus défini par ou lié à un compte donné. Les utilisateurs et les profils contiennent leurs propres comptes uniques, mais il n'est pas nécessaire d'avoir des comptes pour être fonctionnels. La liste des comptes diffère selon l'utilisateur. Pour plus de détails, reportez-vous à la définition de la classe Compte .
  • Profil : un profil comporte des données d'application séparées mais partage certains paramètres à l'échelle du système (par exemple, Wi-Fi et Bluetooth). Un profil est un sous-ensemble de l’existence d’un utilisateur et y est lié. Un utilisateur peut avoir plusieurs profils. Les profils sont créés via une application d'administration de périphériques . Un profil a toujours une association immuable avec 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 créateur.
  • Application : les données d'une application existent au sein de chaque utilisateur associé. Les données des applications sont mises en sandbox à partir d'autres applications du même utilisateur. Les applications d'un même utilisateur peuvent interagir les unes avec les autres via IPC. Pour plus de détails, reportez-vous à 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 du système ne peut pas être supprimé sauf par 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 que lui seul peut définir.
  • Utilisateur système sans tête : premier utilisateur ajouté à un appareil si l'appareil est configuré pour fonctionner en mode utilisateur système sans tête (en définissant ro.fw.mu.headless_system_user=true ). L'utilisateur du système sans tête s'exécute toujours en arrière-plan, de sorte que ces appareils nécessitent des utilisateurs supplémentaires au premier plan pour permettre l'interaction de l'utilisateur.
  • Utilisateur secondaire : tout utilisateur ajouté à l'appareil autre que l'utilisateur du système. Les utilisateurs secondaires peuvent être supprimés (soit par eux-mêmes, soit par un utilisateur administrateur) et ne peuvent pas avoir d'impact sur les autres utilisateurs d'un appareil. Ces utilisateurs peuvent fonctionner en arrière-plan et continuer à bénéficier d'une connectivité réseau.
  • Utilisateur invité : utilisateur secondaire temporaire. Les utilisateurs invités disposent d'une option explicite pour 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 généraux multi-utilisateurs. Par défaut, seul l'utilisateur système est un administrateur.

Catégories de profils

Android utilise les catégories de profils suivantes :

  • Profil géré : créé par une application pour contenir des données professionnelles et des applications. Ils sont gérés exclusivement par le propriétaire du profil (l'application qui a créé le profil de l'entreprise). Le lanceur, les notifications et les tâches récentes sont partagés par l'utilisateur parent et le profil de l'entreprise.
  • Profil restreint : utilise des comptes basés sur l'utilisateur parent, qui peut contrôler quelles applications sont disponibles sur le profil restreint. Disponible uniquement sur les tablettes et les téléviseurs.
  • Profil de clonage : Android prend en charge la création d'un type d'utilisateur de profil de clonage distinct pour permettre l'exécution de deux instances d'une seule application sur l'appareil. AOSP ne fournit pas de support de bout en bout pour cette fonctionnalité. Les OEM doivent ajouter des personnalisations pour offrir la fonctionnalité complète aux utilisateurs d'Android.

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é Android multi-utilisateurs.

Les types d'utilisateurs AOSP prédéfinis sont définis dans frameworks/base/core/java/android/os/UserManager.java et incluent actuellement :

  • 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

Les OEM ont la possibilité de configurer ces types d'utilisateurs en superposant le fichier frameworks/base/core/res/res/xml/config_user_types.xml . Cela facilite la modification de la configuration par défaut pour chaque type d'utilisateur, y compris ses restrictions par défaut, ses icônes, ses badges et le nombre maximum autorisé d'utilisateurs.

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 . Cela permet aux OEM d'introduire leurs propres types de profils non gérés s'ils le souhaitent. Toutefois, il incombe à l'OEM d'apporter les modifications nécessaires à la plate-forme pour prendre en charge les modifications, notamment en modifiant tout code qui vérifie les profils gérés pour gérer désormais le nouveau type de profil, le cas échéant.

Activation du multi-utilisateur

La fonctionnalité multi-utilisateurs est désactivée par défaut. Pour activer la 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 build Android pour remplacer les valeurs de :

  • config_multiuserMaximumUsers avec une valeur supérieure à 1
  • config_enableMultiUserUI avec true

Les fabricants d'appareils peuvent décider du nombre maximum d'utilisateurs. Si les fabricants d'appareils ou autres ont modifié les paramètres, ils doivent garantir le fonctionnement des SMS et de la téléphonie tel que défini dans le document de définition de compatibilité Android (CDD).

Gestion de plusieurs utilisateurs

La gestion des utilisateurs et des profils (à l'exception des profils restreints) est effectuée par des applications qui appellent par programme l'API dans la classe DevicePolicyManager pour restreindre l'utilisation.

Les entreprises peuvent employer 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-utilisateurs

Lorsque des utilisateurs sont ajoutés à un appareil, certaines fonctionnalités sont réduites 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 diffère selon l'utilisateur. Par exemple, les e-mails destinés au compte d'un utilisateur qui n'est pas actuellement sélectionné ne seront disponibles que lorsque cet utilisateur et ce 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 et désactivez le paramètre Autoriser les appels téléphoniques et SMS .

Certaines restrictions existent 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êtera les utilisateurs secondaires en arrière-plan si l'appareil a besoin de mémoire supplémentaire pour les opérations de l'utilisateur de premier plan.

Lorsque vous employez plusieurs utilisateurs sur un appareil Android, gardez le comportement suivant à l'esprit :

  • Les notifications apparaissent simultanément pour tous les comptes d'un même utilisateur.
  • Les notifications pour les autres utilisateurs n'apparaissent 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 de l'application d'un autre utilisateur.
  • N'importe quel utilisateur peut affecter les applications installées pour tous les utilisateurs.
  • Un utilisateur administrateur peut supprimer des applications ou même l'intégralité de l'espace de travail créé par les utilisateurs secondaires.
  • Par défaut, les informations d'une session utilisateur Invité ne persistent pas 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 sur false . Pour plus d'informations sur la création de fichiers de superposition, reportez-vous à Personnalisation de la build avec des superpositions de ressources .

Android Automotive multi-utilisateur

Android Automotive s'appuie sur la mise en œuvre multi-utilisateurs d'Android pour offrir une expérience d'appareil partagé.

Types d'utilisateurs automobiles

En plus des types d'utilisateurs répertoriés ci-dessus, les versions automobiles se distinguent par les types d'utilisateurs suivants :

  • Utilisateur du système sans tête. L'utilisateur du système héberge tous les services du système. Pour prendre en charge plusieurs utilisateurs sur Automotive, l'utilisateur du système doit également être sans tête . Il n'y a qu'un seul utilisateur sans tête. Un utilisateur du système sans tête :
    • Doit toujours fonctionner en arrière-plan.
    • Ne peut pas être supprimé ou accessible directement par l'utilisateur, sauf dans le cas du Device Provisioning. Par exemple, les utilisateurs ne peuvent pas basculer vers ce type d'utilisateur pour effectuer des tâches telles que télécharger des applications ou ajouter des comptes.
    • Ne peut être effacé que par une réinitialisation d'usine.
  • Utilisateurs réguliers. Identique aux utilisateurs secondaires décrits ci-dessus, sauf que les utilisateurs secondaires :
    • Ne pas exécuter en arrière-plan (après avoir été éteint).
    • Peut être créé directement via l’interface utilisateur.
    • Avoir des données d'application séparées mais partager certains paramètres à l'échelle du système. Par exemple, Wi-Fi et Bluetooth.

Mises en garde

Les exceptions suivantes s'appliquent aux utilisateurs du système sans tête et aux utilisateurs réguliers (secondaires) du secteur automobile :

  • L'utilisateur du système sans tête ne prend pas en charge les profils de travail.
  • 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 réguliers (secondaires) ne s'exécutent pas en arrière-plan.

Activation de l'utilisateur du système sans tête

Depuis Android 10, la fonctionnalité multi-utilisateurs peut être utilisée pour les cas d’utilisation automobile. Les distinctions importantes incluent :

  • L'utilisateur du système est sans tête et s'exécute uniquement en arrière-plan.
  • Les utilisateurs humains n'interagissent pas avec l'utilisateur du système.

Pour activer l'utilisateur du système sans tête, les fabricants d'appareils doivent activer le multi-utilisateur comme décrit ci-dessus.

Lorsque l'utilisateur sans tête est activé :
  1. Pour déclarer l'appareil comme étant automobile, ajoutez la fonctionnalité android.hardware.type.automotive .
  2. Définissez ro.fw.headless_system_user sur true .
  3. Définissez la valeur de config_multiuserMaximumUsers sur 2 (ou supérieur).

Pour plus d’informations, consultez Prise en charge multi-utilisateurs dans l’automobile.

Android Automotive multi-utilisateur sur plusieurs écrans

Une nouvelle fonctionnalité expérimentale d'Android 14 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'interface utilisateur sur l'écran auquel ils sont affectés. Cette fonctionnalité permet à plusieurs utilisateurs simultanés du système d'exploitation Android Automotive de prendre en charge des expériences en voiture qui offrent à plusieurs passagers une expérience d'interface utilisateur dédiée dans une seule instance Android.

Pour activer cette fonctionnalité à des fins de développement, 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 users to start in background visible on displays.
    Should be false for all devices in production. Can be enabled only for development use
    in automotive vehicles with passenger displays. -->

<bool name="config_multiuserVisibleBackgroundUsers">false></bool>

Vous pouvez expérimenter 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 14, vous pouvez activer l'expérience en voiture pour plusieurs passagers en tant qu'utilisateurs invités. Pour permettre à plusieurs utilisateurs invités d'être utilisés en développement, les fabricants d'appareils doivent définir une superposition de ressources qui configure le nombre maximum autorisé d'utilisateurs invités dans frameworks/base/core/res/res/xml/config_user_types.xml , comme dans l'exemple ci-dessous :

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