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'utilisateurs des propriétaires d'appareils qui sont essentiels dans un environnement d'entreprise.
En plus du 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 rapports d'intégrité qui permet aux applications d'interroger l'état du matériel des appareils. Cette API est exposée via android.os.HardwarePropertiesManager
et fait des appels via HardwarePropertiesManagerService
au matériel HAL thermique ( hardware/libhardware/include/hardware/thermal.h
). Il est une API protégée, ce qui signifie des applications seul appareil / profil propriétaire périphérique Policy Controller (DPC) et le courant VrListenerService
peut l' appeler.
Pour prendre en charge l'API HardwarePropertiesManager, l'implémentation HAL thermique de l'appareil doit être capable de rapporter les valeurs suivantes :
Valeur | Échelle de rapport | Permet |
---|---|---|
Température du [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 de limitation/d'arrêt des composants |
Temps d'activité du processeur/total activé | 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 valeurs de rapport 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 périphériques, vérifiez les points suivants uses-features
sont déclarées:
-
android.software.device_admin
-
android.software.managed_users
(caractéristique est déclarée si et seulement si le dispositif a au moins 2 Go de mémoire).
Pour confirmer ces uses-feature
des valeurs 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, tous les cas par exemple de _managed_profile.xml
fichiers ci - dessous ne sont pertinentes que si android.software.managed_users
est déclarée. 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
Applications nécessaires et pour les utilisateurs gérés non admissibles sont appliqués aux utilisateurs secondaires créés par 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>
Configuration requise pour le 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 récents et les notifications. Si vous utilisez launcher3 dans PSBA sans modifications, vous soutenez probablement déjà cette fonctionnalité de badging.
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 le provisionnement 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 remet 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(); } ... }