Implémentation de la gestion des appareils

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();
       }

       ...
   }