Cette section décrit comment activer et valider les fonctionnalités de gestion des appareils requises pour préparer les appareils aux profils gérés. Il couvre également les cas d'utilisation des propriétaires d'appareils qui sont essentiels dans un environnement d'entreprise.
Outre le code AOSP, un appareil nécessite les composants suivants pour fonctionner avec les profils gérés.
Exigences générales
Les appareils destinés à prendre en charge la gestion des appareils doivent répondre aux exigences générales suivantes.
Valeurs HAL thermiques
Android 7.0 et versions ultérieures incluent la prise en charge de l'API HardwarePropertiesManager, une API de surveillance des appareils et de rapport d'intégrité qui permet aux applications d'interroger l'état du matériel de l'appareil. Cette API est exposée via android.os.HardwarePropertiesManager
et effectue des appels via HardwarePropertiesManagerService
vers le matériel thermique HAL ( hardware/libhardware/include/hardware/thermal.h
). Il s'agit d'une API protégée, ce qui signifie que seules les applications Device Policy Controller (DPC) du propriétaire de l'appareil/du profil et le VrListenerService
actuel peuvent l'appeler.
Pour prendre en charge l'API HardwarePropertiesManager, l'implémentation HAL thermique de l'appareil doit pouvoir signaler les valeurs suivantes :
Évaluer | Échelle de déclaration | Active |
---|---|---|
Température de [CPU|GPU|Batterie|Peau de l'appareil] | Température du composant en degrés Celsius | Les applications peuvent vérifier les températures de l'appareil et les températures d'étranglement/d'arrêt des composants |
CPU actif/total des temps activés | Temps en millisecondes | Les applications peuvent vérifier l'utilisation du processeur par cœur |
Vitesse du ventilateur | RPM | Les applications peuvent vérifier la vitesse du ventilateur |
Les implémentations doivent gérer correctement les situations de rapports de valeurs lorsqu'un cœur (ou GPU, batterie, ventilateur) se déconnecte ou est branché/débranché.
Activation de la gestion des appareils
Pour activer la gestion des appareils, assurez-vous que les fonctionnalités uses-features
suivantes sont déclarées :
-
android.software.device_admin
-
android.software.managed_users
(la fonctionnalité est déclarée si et seulement si l'appareil dispose d'au moins 2 Go de mémoire.)
Pour confirmer que ces valeurs uses-feature
ont été déclarées sur un appareil, exécutez : adb shell pm list features
.
Applications essentielles uniquement
Par défaut, seules les applications essentielles au bon fonctionnement du profil sont activées dans le cadre du provisionnement d'un appareil géré. Gardez à l'esprit que tous les exemples d'instances de fichiers _managed_profile.xml
ci-dessous ne sont pertinents que si android.software.managed_users
est déclaré. Les OEM doivent s'assurer que le profil ou l'appareil géré dispose de toutes les applications requises en modifiant :
vendor_required_apps_managed_profile.xml vendor_required_apps_managed_device.xml vendor_disallowed_apps_managed_profile.xml vendor_disallowed_apps_managed_device.xml /* * The following are for Android 9 and higher only */ vendor_required_apps_managed_user.xml vendor_disallowed_apps_managed_user.xml
Les applications requises et non autorisées pour les utilisateurs gérés sont appliquées aux utilisateurs secondaires créés via DevicePolicyManager#createAndManageUser
.
Exemples d'un appareil Nexus
Android 8.x et versions antérieures
pacakages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml
Android 9 et supérieur
frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml
<resources> <!-- A list of apps to be retained on the managed device --> <string-array name="vendor_required_apps_managed_device"> <item>com.android.vending</item> <!--Google Play --> <item>com.google.android.gms</item> <!--Required by Play --> <item>com.google.android.contacts</item> <!--Google or OEM Contacts--> <item>com.google.android.googlequicksearchbox</item> <!--Google Launcher --> <item>com.google.android.launcher</item> <!--Google Launcher or OEM Launcher --> <item>com.google.android.dialer</item> <!--Google or OEM dialer to enable making phone calls --> </string-array> </resources>
Android 8.x et versions antérieures
packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml
Android 9 et supérieur
frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml
<resources> <!-- A list of apps to be retained in the managed profile. This includes any Google experience apps required. --> <string-array name="vendor_required_apps_managed_profile"> <item>com.android.vending</item> <!-- Google Play --> <item>com.google.android.gms</item> <!-- Required by Play --> <item>com.google.android.contacts</item> <!-- Google or OEM Contacts --> </string-array> </resources>
Exigences du lanceur
Vous devez mettre à jour le lanceur pour prendre en charge les applications de badge avec le badge d'icône (fourni dans AOSP pour représenter les applications gérées) et d'autres éléments d'interface utilisateur de badge tels que les événements récents et les notifications. Si vous utilisez launcher3 dans AOSP sans modifications, vous prenez probablement déjà en charge cette fonctionnalité de badge.
Exigences NFC
Les appareils avec NFC doivent activer NFC pendant l'expérience prête à l'emploi (c'est-à-dire l'assistant de configuration) et être configurés pour accepter les intentions de provisionnement géré :
packages/apps/Nfc/res/values/provisioning.xml
<bool name="enable_nfc_provisioning">true</bool> <item>application/com.android.managedprovisioning</item>
Configuration requise
Les appareils qui incluent une expérience prête à l'emploi (c'est-à-dire un assistant de configuration) doivent implémenter le provisionnement du propriétaire de l'appareil. Lorsque l'expérience prête à l'emploi s'ouvre, elle doit vérifier si un autre processus (tel que l'approvisionnement du propriétaire de l'appareil) a déjà terminé la configuration de l'utilisateur et, si c'est le cas, elle doit déclencher une intention d'accueil et terminer la configuration. Cette intention est détectée par l'application d'approvisionnement, qui passe ensuite le contrôle au propriétaire de l'appareil nouvellement défini.
Pour répondre aux exigences de configuration, ajoutez le code suivant à l'activité principale de configuration de l'appareil :
@Override protected void onStart() { super.onStart(); // When returning to a setup wizard activity, check to see if another setup process // has intervened and, if so, complete an orderly exit boolean completed = Settings.Secure.getInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 0) != 0; if (completed) { startActivity(new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_HOME) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)); finish(); } ... }