Questa sezione descrive come abilitare e convalidare le funzioni di gestione dei dispositivi necessarie per preparare i dispositivi per i profili gestiti. Copre anche i casi degli utenti dei proprietari dei dispositivi che sono essenziali in un ambiente aziendale.
Oltre al codice AOSP, un dispositivo richiede i seguenti componenti per funzionare con i profili gestiti.
Requisiti generali
I dispositivi che intendono supportare la gestione dei dispositivi devono soddisfare i seguenti requisiti generali.
Valori HAL termici
Android 7.0 e versioni successive includono il supporto per l'API HardwarePropertiesManager, un'API per il monitoraggio del dispositivo e la segnalazione dello stato che consente alle applicazioni di interrogare lo stato dell'hardware del dispositivo. Questa API è esposta tramite android.os.HardwarePropertiesManager
ed effettua chiamate tramite HardwarePropertiesManagerService
all'HAL termico hardware ( hardware/libhardware/include/hardware/thermal.h
). È un'API protetta, il che significa che solo le applicazioni Device Policy Controller (DPC) del proprietario del dispositivo/profilo e l'attuale VrListenerService
possono chiamarla.
Per supportare l'API HardwarePropertiesManager, l'implementazione HAL termica del dispositivo deve essere in grado di riportare i seguenti valori:
Valore | Scala di segnalazione | Consente |
---|---|---|
Temperatura di [CPU|GPU|Batteria|Skin del dispositivo] | Temperatura del componente in gradi Celsius | Le app possono controllare le temperature del dispositivo e le temperature di limitazione/spegnimento dei componenti |
CPU attiva/tempi abilitati totali | Tempo in millisecondi | Le app possono controllare l'utilizzo della CPU per core |
Velocità della ventola | RPM | Le app possono controllare la velocità della ventola |
Le implementazioni dovrebbero gestire correttamente le situazioni dei valori di segnalazione quando un core (o GPU, batteria, ventola) va offline o è collegato/scollegato.
Abilitazione della gestione dei dispositivi
Per abilitare la gestione dei dispositivi, assicurati che siano dichiarate le seguenti uses-features
:
-
android.software.device_admin
-
android.software.managed_users
(la funzionalità viene dichiarata se e solo se il dispositivo ha almeno 2 GB di memoria.)
Per confermare che questi valori uses-feature
sono stati dichiarati su un dispositivo, eseguire: adb shell pm list features
.
Solo app essenziali
Per impostazione predefinita, solo le applicazioni essenziali per il corretto funzionamento del profilo sono abilitate nell'ambito del provisioning di un dispositivo gestito. Tieni presente che tutte le istanze di esempio dei file _managed_profile.xml
di seguito sono rilevanti solo se è dichiarato android.software.managed_users
. Gli OEM devono garantire che il profilo o il dispositivo gestito disponga di tutte le applicazioni richieste modificando:
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
Le app obbligatorie e non consentite per gli utenti gestiti vengono applicate agli utenti secondari creati tramite DevicePolicyManager#createAndManageUser
.
Esempi da un dispositivo Nexus
Android 8.xe precedenti
pacakages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml
Android 9 e versioni successive
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.xe precedenti
packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml
Android 9 e versioni successive
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>
Requisiti del lanciatore
È necessario aggiornare il programma di avvio per supportare le applicazioni di badge con il badge icona (fornito in AOSP per rappresentare le applicazioni gestite) e altri elementi dell'interfaccia utente del badge come i recenti e le notifiche. Se utilizzi launcher3 in AOSP senza modifiche, probabilmente supporterai già questa funzione di badge.
Requisiti NFC
I dispositivi con NFC devono abilitare NFC durante l'esperienza predefinita (ad esempio, la procedura guidata di configurazione) ed essere configurati per accettare gli intenti di provisioning gestito:
packages/apps/Nfc/res/values/provisioning.xml
<bool name="enable_nfc_provisioning">true</bool> <item>application/com.android.managedprovisioning</item>
Requisiti di installazione
I dispositivi che includono un'esperienza predefinita (ad esempio, la procedura guidata di configurazione) devono implementare il provisioning del proprietario del dispositivo. Quando si apre l'esperienza predefinita, dovrebbe verificare se un altro processo (come il provisioning del proprietario del dispositivo) ha già completato la configurazione dell'utente e, in tal caso, dovrebbe attivare un intento home e completare la configurazione. Questa intenzione viene catturata dall'applicazione di provisioning, che passa quindi il controllo al proprietario del dispositivo appena impostato.
Per soddisfare i requisiti di configurazione, aggiungi il codice seguente all'attività principale della configurazione del dispositivo:
@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(); } ... }