Questa guida descrive come sviluppare un controller dei criteri dei dispositivi (DPC) per in un'implementazione di Android Enterprise. Un'app DPC, precedentemente nota in qualità di controller delle norme di lavoro, controlla i criteri locali relativi ai dispositivi e applicazioni sui dispositivi.
Informazioni sui DPC (controller criteri dispositivi)
In un'implementazione di Android Enterprise, un'azienda mantiene il controllo i vari aspetti dei dispositivi degli utenti, come l'isolamento per i profili di lavoro le informazioni dagli utenti dati personali, preconfigurando le app approvate l'ambiente o la disattivazione delle funzionalità del dispositivo (ad esempio, la fotocamera).
In qualità di EMM, sviluppi un'app DPC che può essere utilizzata dai tuoi clienti nelle in combinazione con la console EMM e o server web. Il tuo cliente implementa il DPC sui dispositivi utente che gestisce. Il DPC funge da collegamento tra la console EMM (e il server) e il dispositivo. Un amministratore utilizza la console EMM per eseguire una serie di attività, tra cui: configurazione delle impostazioni e delle app del dispositivo.
Il DPC crea e gestisce il profilo di lavoro sul dispositivo su cui è installato. Il profilo di lavoro cripta le informazioni relative al lavoro e le tiene separate utente app e dati personali. Prima di creare il profilo di lavoro, il DPC può anche eseguire il provisioning di un account Google Play gestito da usare sul dispositivo.
Questa guida mostra come sviluppare un DPC che possa creare e gestire i profili di lavoro.
Libreria di supporto DPC per EMM
La libreria di supporto DPC per EMM comprende classi di utilità e helper che facilitano il provisioning e la gestione dei dispositivi Android in un'azienda completamente gestito di Google Cloud. La libreria ti consente di sfruttare funzioni importanti nel tuo App DPC:
- Assistenza per il provisioning degli account Google Play gestiti: Provisioning gestito Gli account Google Play dell'app DPC richiedono che Google Play e Google Le app di Play Services soddisfano i requisiti di versione minimi. Tuttavia, l'aggiornamento di questi possono essere complesse. La libreria di supporto DPC si occupa di aggiornare questi di Google Cloud, oltre a garantire la compatibilità con gli aggiornamenti futuri alla versione Procedura di provisioning degli account Google Play. Visualizza gli account della versione gestita di Google Play il provisioning dell'assistenza per maggiori dettagli.
- Supporto delle configurazioni gestite: L'utilizzo dell'API Play EMM per gestire le configurazioni gestite per le app approvate è la è il modo più semplice per implementare le configurazioni gestite nel DPC. L'assistenza DPC (controller criteri dispositivi) La raccolta ti consente di delegare a Google Play l'attività di applicazione delle (in precedenza limitazioni delle app) impostate dall'amministratore che utilizza la soluzione EMM Google Cloud. L'utilizzo dell'API Play EMM per gestire le configurazioni gestite consente la configurazione dell'app da applicare atomicamente durante l'installazione. Consulta Applicare configurazioni gestite app di lavoro per ulteriori informazioni su come abilitare questa funzionalità nelle il tuo DPC (controller criteri dispositivi).
Per scaricare la raccolta, procedi nel seguente modo. Le attività descritte in questa guida presuppone l'uso della libreria di supporto DPC (controller criteri dispositivi).
Scarica la libreria di assistenza DPC (controller criteri dispositivi)
Per utilizzare la libreria di supporto DPC (controller criteri dispositivi), scaricala dalla community dei provider EMM di Android Enterprise. Devi aggiungere la libreria al file build.gradle e gestire le altre quando crei l'app DPC (controller criteri dispositivi). Ad esempio, la libreria richiede la versione 11.4.0 libreria client di autenticazione di Google Play Services.
- Aggiungi la raccolta al file
build.gradle
:
Alla moda
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- Aggiungere la versione 11.4.0
Libreria client di autenticazione di Google Play Services al file build.gradle:
Alla moda
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
L'esecuzione della libreria richiede determinate autorizzazioni, quindi devi aggiungerle a il file manifest dell'app DPC (controller criteri dispositivi) quando la carichi su Google Play:
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> <uses-permission android:name= "android.permission.GET_ACCOUNTS"/> <uses-permission android:name= "android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Oltre a questi passaggi preliminari di configurazione e deployment, devi anche inizializzare la funzionalità specifica della libreria nel codice DPC, a seconda la funzionalità che vuoi implementare. I dettagli sono inclusi nel relativo sezioni seguenti.
Crea un DPC (controller criteri dispositivi)
Crea il tuo DPC sul modello esistente utilizzato per le applicazioni di amministrazione dei dispositivi.
Nello specifico, la tua app deve avere la sottoclasse
DeviceAdminReceiver
(una classe del gruppo android.app.admin
) come descritto in
.
Amministrazione del dispositivo.
Crea un profilo di lavoro
Per un esempio che dimostra come creare un profilo di lavoro di base, consulta BasicManagedProfile su GitHub.
Per creare un profilo di lavoro su un dispositivo che ha già un profilo personale:
scopri innanzitutto se il dispositivo è in grado di supportare un profilo di lavoro, controllando la presenza del
dell'esistenza
Funzionalità di sistema di FEATURE_MANAGED_USERS
:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Se il dispositivo supporta i profili di lavoro, creane uno inviando un intent con ACTION_PROVISION_MANAGED_PROFILE un'azione. In alcune documentazioni, il profilo gestito è un termine generico che indica la stessa cosa di profilo di lavoro nel contesto di Android nelle aziende.) Includi il nome del pacchetto di amministrazione del dispositivo come extra:
Kotlin
val provisioningActivity = getActivity() // You'll need the package name for the DPC app. val myDPCPackageName = "com.example.myDPCApp" // Set up the provisioning intent val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java) provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()) if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE) provisioningActivity.finish() }
Java
Activity provisioningActivity = getActivity(); // You'll need the package name for the DPC app. String myDPCPackageName = "com.example.myDPCApp"; // Set up the provisioning intent Intent provisioningIntent = new Intent("android.app.action.PROVISION_MANAGED_PROFILE"); ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class); provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()); if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager()) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE); provisioningActivity.finish(); }
Il sistema risponde a questo intento:
- Verifica che il dispositivo sia criptato. In caso contrario, il sistema richiede all'utente di crittografare il dispositivo prima di procedere.
- Crea un profilo di lavoro.
- Rimuove le applicazioni non richieste dal profilo di lavoro.
- Copia l'app DPC nel profilo di lavoro e imposta il DPC stesso come il proprietario del profilo.
Esegui l'override di
onActivityResult()
in
controlla se il provisioning è riuscito:
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data) } }
Java
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return; } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data); } }
Completa l'attivazione del profilo di lavoro
Una volta eseguito il provisioning del profilo, il sistema chiama il DPC (controller criteri dispositivi)
il metodo
DeviceAdminReceiver.onProfileProvisioningComplete()
dell'app. Esegui override
questo metodo di callback per completare l'attivazione del profilo di lavoro.
Un tipico DeviceAdminReceiver.onProfileProvisioningComplete()
l'implementazione del callback:
- Verifica che il dispositivo sia conforme alle norme relative ai dispositivi di EMM, come descritto in Configurare i criteri relativi ai dispositivi.
- Abilita le applicazioni di sistema create dall'amministratore
disponibile all'interno del profilo di lavoro utilizzando
DevicePolicyManager.enableSystemApp()
. - Se il dispositivo utilizza la versione gestita di Google Play, aggiunge l'account appropriato alla
il profilo di lavoro per poter installare le app approvate sul dispositivo.
- Account Google Play gestiti: consulta l'articolo Assicurarsi che il dispositivo funzioni per gli account della versione gestita di Google Play e aggiungere un account della versione gestita di Google Play per maggiori dettagli.
- Account Google: utilizza
AccountManager.addAccount()
.
Attiva il profilo di lavoro
Una volta completate queste attività, chiama il gestore delle norme relative ai dispositivi
Metodo
setProfileEnabled()
per attivare il profilo di lavoro:
Kotlin
// Get the device policy manager val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val componentName = myDeviceAdminReceiver.getComponentName(this) // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile") // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName)
Java
// Get the device policy manager DevicePolicyManager myDevicePolicyMgr = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName componentName = myDeviceAdminReceiver.getComponentName(this); // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile"); // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName);
Configurare i criteri relativi ai dispositivi
L'app DPC applica i criteri relativi ai dispositivi impostati da un amministratore per soddisfare i requisiti e i vincoli dell'organizzazione. Ad esempio, il criterio di sicurezza richiede che il dispositivo si blocchi dopo un determinato numero di tentativi di inserimento della password non riusciti. Il DPC interroga la console EMM per conoscere i criteri correnti, quindi li applica utilizzando l'app Dispositivo l'API di amministrazione.
Per informazioni su come applicare i criteri relativi ai dispositivi, vedi Norme.
Applica configurazioni gestite alle app di lavoro
Le configurazioni gestite ti consentono di offrire ai clienti la possibilità di preconfigurare le app approvate per l'implementazione e aggiornarle alle app quando è necessario modificare la configurazione. Configurare un'app prima di il deployment garantisce che siano soddisfatti i criteri di sicurezza e altri criteri dell'organizzazione al momento dell'installazione dell'app sul dispositivo di destinazione.
Le funzionalità dell'app vengono definite dallo sviluppatore in uno schema XML (i schema di configurazioni gestite) che accompagna l'app al momento del caricamento su Google Google Play (gli sviluppatori di app possono consultare l'articolo Configurare le configurazioni gestite per maggiori dettagli).
Puoi recuperare questo schema dall'app per mostrarlo agli amministratori dei clienti nella console EMM, fornire una UI in cui siano presenti le varie opzioni definite visualizzazione dello schema e consentire agli amministratori di preconfigurare le impostazioni dell'app. La configurazione gestita risultante impostata dall'amministratore è in genere memorizzati sul server EMM, che a sua volta utilizza API EMM di Play da impostare Configurazioni gestiteper il dispositivo o Configurazioni gestite per l'utente. Consulta Configurazioni gestite tramite Google Play.
Le configurazioni gestite possono essere applicate all'app utilizzando l'API Play EMM (approccio consigliato) o direttamente dal DPC (descritto in Applicare le configurazioni gestite) direttamente dal DPC). Con l'API EMM di Play presenta diversi vantaggi, tra cui una facile implementazione grazie alla possibilità di utilizzare Libreria di supporto DPC per semplificare le attività del DPC (controller criteri dispositivi). Inoltre, l'API Play EMM:
- Imposta la configurazione in modo atomico quando viene installata una nuova app, assicurando così che sia pronta la prima volta che l'utente avvia l'app.
- Consente di gestire le configurazioni per singolo utente, per evitare di monitorare il provisioning in base al dispositivo.
Applica le configurazioni gestite utilizzando API EMM di Play
Per utilizzare l'API Play EMM per le configurazioni gestite, il DPC deve consentire ai Google Play per impostare le configurazioni. La libreria di supporto DPC si occupa di questo eseguendo il proxy della configurazione inviata da Google Play.
Per utilizzare Google Play API EMM, scarica la libreria di supporto DPC e poi abilitare il supporto delle configurazioni gestite nel DPC.
Attiva il supporto delle configurazioni gestite in il tuo DPC (controller criteri dispositivi)
Importa questo corso nel DPC:
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
Inizializzare la libreria di configurazioni gestite. In questo esempio, "admin" sono il valore ComponentName di DeviceAdminReceiver.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
Java
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
Abilita configurazioni gestite:
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
Java
managedConfigurationsSupport.enableManagedConfigurations();
Con questa libreria inizializzata nel DPC, è possibile utilizzare L'API EMM di Google Play nel tuo provider EMM console e server per applicare le configurazioni gestite alle app approvate, anziché programmare queste attività direttamente nel DPC. Consulta Configurazioni gestite tramite Play per maggiori dettagli.
Applica configurazioni gestite direttamente dal DPC (controller criteri dispositivi)
Per modificare le impostazioni di configurazione di un'app direttamente dal DPC, chiama il Metodo DevicePolicyManager.setApplicationRestrictions() e passare i parametri per il set di dati dell'app DeviceAdminReceiver: nome pacchetto dell'app di destinazione. e il set che comprende la configurazione gestita dell'app come impostata dall'amministratore. Consulta Come vengono DPC ed EMM interagiscono con la console e per configurare le configurazioni gestite per maggiori dettagli. Tuttavia, da notare che questo approccio alternativo all'applicazione delle norme non sono consigliate nelle implementazioni degli account Google Play gestiti.
Provisioning degli account della versione gestita di Google Play assistenza
La libreria di supporto DPC include supporto del provisioning gli account della versione gestita di Google Play. Per utilizzare questo supporto, devi prima inizializzare la classe e poi puoi Assicurare che il ambiente di lavoro e aggiungi un nella versione gestita di Google Play.
Inizializzare gli account della versione gestita di Google Play nel tuo DPC (controller criteri dispositivi)
Importa questo corso nel DPC:
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
Inizializza la libreria di compatibilità del provisioning. In questo esempio, "admin" è
il ComponentName
di
DeviceAdminReceiver
.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
Java
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
Garantire l'ambiente di lavoro account della versione gestita di Google Play
Dopo che il DPC ha eseguito il provisioning di un dispositivo in modalità proprietario del profilo (ACTION_PROVISION_MANAGED_PROFILE
) o di un dispositivo
modalità proprietario (ACTION_PROVISION_MANAGED_DEVICE
), assicurati che il dispositivo possa supportare gli account della versione gestita di Google Play chiamando:
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
Java
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
Il callback segnala l'esito positivo o negativo di questo processo. Quando viene richiamato resi correttamente, è possibile aggiungere un account della versione gestita di Google Play. Se il callback segnala un errore, chiedi all'utente di verificare che dispositivo dispone di una connessione di rete (ad esempio, se il download non va a buon fine). In altre casi, segnalare il mancato funzionamento a Google.
Kotlin
object : WorkingEnvironmentCallback() { override fun onSuccess() { // Can now provision the managed Google Play Account } override fun onFailure(error: Error) { // Notify user, handle error (check network connection) } }
Java
new WorkingEnvironmentCallback() { @Override public void onSuccess() { // Can now provision the managed Google Play Account } @Override public void onFailure(Error error) { // Notify user, handle error (check network connection) } }
Aggiungi un account Google Play gestito
AccountManager
del framework Android
possono aggiungere un account della versione gestita di Google Play a un dispositivo. Per semplificare l'interazione con
AccountManager
, usa la funzione helper (mostrata nell'esempio di seguito)
dalla libreria di supporto DPC. La funzione
gestisce il token restituito dal server di Google Play e facilita il provisioning
l'account della versione gestita di Google Play. La funzione restituisce quando la versione gestita di Google Play
L'account è in uno stato valido:
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
Java
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token
: il token di autenticazione utente generato dall'account Google ChiamataUsers.generateAuthenticationToken()
API EMM di Play.accountAddedCallback
: restituisce l'account Google Play gestito aggiunta al dispositivo. Questo callback deve includereonAccountReady()
eonFailure()
metodi.
Kotlin
val workAccountAddedCallback = object : WorkAccountAddedCallback() { override fun onAccountReady(account: Account, deviceHint: String) { // Device account was successfully added to the device // and is ready to be used. } override fun onFailure(error: Error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } }
Java
WorkAccountAddedCallback workAccountAddedCallback = new WorkAccountAddedCallback() { @Override public void onAccountReady(Account account, String deviceHint) { // Device account was successfully added to the device // and is ready to be used. } @Override public void onFailure(Error error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } };
Documentazione correlata
- Per ulteriori informazioni sull'API di amministrazione dei dispositivi, consulta Dispositivo Amministrazione.
- Per scoprire di più sui metodi di provisioning di Android Enterprise, vedi Esegui il provisioning dei dispositivi nel Guida per gli sviluppatori di Android Enterprise.
- Per un esempio GitHub che dimostra come creare un profilo di lavoro di base, consulta BasicManagedProfile.
- Per un esempio GitHub che dimostra come impostare le configurazioni su altre app come proprietario del profilo, consulta AppRestrictionEnforcer.