Provisioning dei dispositivi

Esistono diversi modi per eseguire il provisioning dei dispositivi. I requisiti aziendali dei tuoi clienti determinano i metodi di provisioning che utilizzerai.

Nozioni di base sul provisioning dispositivo

Gli scenari di deployment del provisioning dei dispositivi che i tuoi clienti vogliono supportare (ad esempio BYOD o di proprietà dell'azienda) determinano le modalità di funzionamento che verranno utilizzate (ad esempio, la modalità proprietario del dispositivo o di proprietà del profilo). Allo stesso modo, le modalità operative e le release di Android che devi supportare determinano i metodi di provisioning che implementerai.

Scenari di deployment

In uno scenario di deployment di proprietà dell'azienda, l'azienda possiede e controlla completamente i dispositivi utilizzati dai dipendenti. In genere, le organizzazioni eseguono il deployment dei dispositivi di proprietà dell'azienda quando devono monitorare e gestire rigorosamente l'intero dispositivo.

Le aziende che supportano uno scenario di implementazione BYOD consentono ai propri dipendenti di portare al lavoro i dispositivi di proprietà personale e di utilizzarli per accedere a informazioni e applicazioni aziendali con privilegi.

Modalità di funzionamento

I deployment di proprietà dell'azienda sono supportati dalla modalità operativa del proprietario del dispositivo. In Android, l'app di gestione è denominata controller dei criteri dei dispositivi (DPC). Il DPC applica i criteri su un dispositivo Android e, quando agisce come proprietario del dispositivo, gestisce l'intero dispositivo. In qualità di proprietario del dispositivo, il DPC può eseguire azioni a livello di dispositivo, ad esempio configurare la connettività a livello di dispositivo, configurare le impostazioni globali ed eseguire il ripristino dei dati di fabbrica.

I deployment BYOD sono supportati dalla modalità operativa proprietario del profilo. Tramite il DPC, l'azienda consente l'uso di lavoro ai dispositivi personali aggiungendo un profilo di lavoro all'account utente principale sul dispositivo. Il profilo di lavoro è associato all'utente principale, ma come profilo separato. In qualità di proprietario del profilo, il DPC gestisce solo il profilo di lavoro sul dispositivo e ha un controllo limitato al di fuori del profilo di lavoro.

I deployment di dispositivi legacy sono supportati dalla modalità operativa legacy, che consente al DPC di controllare un dispositivo limitato (ad esempio la possibilità di cancellare un dispositivo, richiedere un codice di accesso o applicare alcuni criteri). Puoi fornire la gestione delle app sui dispositivi precedenti tramite Google Play consentendo all'utente di aggiungere un Account Google o chiedendo al tuo DPC di aggiungere un account Google Play gestito al dispositivo precedente.

La modalità legacy è sconsigliata per i deployment in cui è possibile implementare la modalità proprietario del dispositivo o la modalità proprietario del profilo. Utilizza il massimo livello possibile di gestione dei dispositivi anziché una soluzione di "minimo comune denominatore" su un parco risorse ampio.

Metodi di provisioning del proprietario del dispositivo

Devi eseguire il provisioning della modalità di funzionamento del proprietario del dispositivo durante la configurazione iniziale di un nuovo dispositivo o dopo un ripristino dei dati di fabbrica. Non è possibile eseguire il provisioning della modalità Proprietario del dispositivo su un dispositivo in nessun altro momento.

A seconda del caso d'uso, sono disponibili due tipi principali di metodi di provisioning per la modalità proprietario del dispositivo di provisioning.

  • In un flusso basato sui dispositivi, gli amministratori IT possono utilizzare NFC per eseguire il provisioning di un numero elevato di dispositivi. Questo flusso può essere utilizzato per scenari con account Google Play gestito o G Suite.
  • In un flusso gestito dall'utente, le opzioni variano a seconda che l'organizzazione utilizzi G Suite.
    • In uno scenario di G Suite, l'utente aggiunge il proprio Account Google durante la configurazione iniziale del dispositivo e il DPC deve guidare l'utente attraverso i passaggi per configurare il proprietario del dispositivo. Un flusso gestito dall'utente può aiutare gli utenti finali a configurare nuovi dispositivi ed è un'alternativa quando i dispositivi non supportano la tecnologia NFC.
    • Quando un'organizzazione non utilizza G Suite, devi utilizzare il metodo degli account della versione gestita di Google Play.

Nota:se limiti la distribuzione della tua app a paesi specifici in Play, queste limitazioni vengono ignorate durante il provisioning del proprietario del dispositivo. Il DPC verrà scaricato anche se il dispositivo non si trova in un paese di destinazione.

Metodi di provisioning del proprietario del profilo

Il metodo consigliato per eseguire il provisioning della modalità operativa di proprietario del profilo dipende dall'utilizzo o meno di G Suite da parte dell'organizzazione.

  • Nel caso di G Suite, si consiglia un flusso gestito dall'utente, in cui quest'ultimo aggiunge il proprio Account Google e il DPC guida l'utente attraverso i passaggi per configurare il proprietario del profilo.
  • Quando un'organizzazione non utilizza G Suite, si consiglia di utilizzare il metodo Account della versione gestita di Google Play.

È supportato anche il metodo tradizionale, in cui all'utente viene indicato di installare manualmente il DPC. Si basa sull'utente per il download del tuo DPC da Google Play e per l'installazione, poi guida l'utente per il resto del processo per configurare il proprietario del profilo.

Metodi di provisioning per i dispositivi precedenti

I dispositivi precedenti eseguono versioni di Android precedenti alla 5.0 o non supportano i profili di lavoro. Il metodo consigliato per eseguire il provisioning di un dispositivo legacy dipende dall'utilizzo o meno di Account Google gestiti da parte dell'organizzazione.

  • Nel caso degli Account Google gestiti, il metodo consigliato è un flusso gestito dall'utente in cui quest'ultimo aggiunge il proprio Account Google e il DPC guida l'utente attraverso i passaggi di configurazione.
  • Quando un'organizzazione non utilizza Account Google gestiti, si consiglia di utilizzare il metodo Account della versione gestita di Google Play, con cui l'utente installa il DPC da Google Play. Il DPC può aggiungere account Google Play gestiti a un dispositivo precedente in modo simile a come aggiunge l'account a un profilo di lavoro.

È supportato anche il metodo tradizionale, in cui all'utente viene indicato di installare manualmente il controller DPC e che successivamente aggiunge un Account Google. Si basa sull'utente per il download del tuo DPC da Google Play e per l'installazione, poi guida l'utente per il resto del processo di configurazione.

Principali differenze di provisioning tra le versioni di Android

Scenario
di deployment
Modalità
di funzionamento
Metodo
Provisioning
*Prima della
5.0
5,0;
5,1
6.0,
in seguito
7.0,
in seguito
Di proprietà dell'azienda Proprietario del dispositivo Codice QR
Account Google Play gestiti
Account Google
NFC
Legacy Account Google Play gestiti
Account Google
BYOD Proprietario del profilo Account Google Play gestiti
Account Google **5,1
Installazione manuale DPC
Legacy Account Google Play gestiti
Account Google
Installazione manuale DPC

*La modalità legacy è consigliata anche per i dispositivi che non supportano i profili di lavoro, anche se il dispositivo esegue una versione di Android successiva alla 5.0. Si tratta in genere di dispositivi con una scarsa quantità di RAM.

**Il metodo dell'Account Google in Android 5.1 supporta solo la modalità operativa proprietario del profilo e l'utente può configurarlo soltanto da Impostazioni > Aggiungi account.

Considerazioni generali sull'implementazione

Di seguito sono riportati alcuni aspetti da considerare durante la scrittura del DPC, indipendentemente dalla modalità operativa implementata.

Compatibilità con Google Play Services

La guida agli APK di Google Play Services indica agli sviluppatori di eseguire un controllo della versione dei servizi Google Play prima di eseguire transazioni API. Il tentativo di aggiornare Google Play Services causa gravi interruzioni nella procedura di configurazione del dispositivo, pertanto il DPC non deve tentare di aggiornare Google Play Services prima che il provisioning del dispositivo sia completo.

I punti chiave sulla compatibilità DPC con Google Play Services sono:

  • Il DPC deve essere eseguito utilizzando i servizi Google Play forniti con un particolare dispositivo.
  • Il DPC non dovrebbe fare affidamento sulle nuove funzionalità delle versioni future di Google Play Services disponibili al momento del provisioning dei dispositivi.

Una volta completato il provisioning del dispositivo, il DPC può chiedere all'utente di aggiornare Google Play Services in modo che possa utilizzare le funzionalità più recenti. Tuttavia, se una funzionalità non è disponibile per qualche motivo, il DPC deve tornare normalmente alla versione fornita con il dispositivo.

Recupero dei dettagli del dispositivo in corso...

A causa dei ritardi nella propagazione, potrebbero essere necessari fino a 2 minuti prima che una chiamata a devices.get per un dispositivo appena registrato restituisca i dettagli del dispositivo.

Se il tuo flusso di lavoro richiede i dettagli prima che l'utente finale possa utilizzare il dispositivo o il profilo di lavoro, ti consigliamo di utilizzare una schermata di avanzamento nel DPC e di attendere fino al completamento della chiamata.

Considerazioni sull'implementazione per la modalità proprietario del profilo

Di seguito sono riportati alcuni aspetti da considerare quando scrivi il DPC per implementare la modalità operativa del proprietario del profilo.

Rimuovi o disattiva il DPC personale

Quando esegui il provisioning della modalità operativa di proprietario del profilo, il DPC inizia a essere eseguito nel profilo personale e avvia il processo per la creazione di un profilo di lavoro. Una volta creato il profilo di lavoro, anche il DPC è in esecuzione all'interno del profilo. Il DPC nel profilo di lavoro completa il processo di provisioning. A quel punto, il DPC nel profilo personale dovrebbe disattivarlo oppure deve essere rimosso dall'utente del dispositivo.

L'utente rimuove il DPC personale

  1. Il DPC personale rimane in ascolto di ACTION_MANAGED_PROFILE_PROVISIONED. (per i dispositivi Android 5.1, il DPC personale deve invece ascoltare ACTION_MANAGED_PROFILE_ADDED).
  2. Il DPC personale avvia una richiesta di disinstallazione ACTION_UNINSTALL_PACKAGE. In questo modo l'utente deve disinstallare il DPC personale. Per un'esperienza utente ottimale, il processo di disinstallazione deve avvenire durante il flusso di provisioning.

Il DPC personale si disattiva automaticamente

  1. Il DPC personale rimane in ascolto di ACTION_MANAGED_PROFILE_PROVISIONED. (per i dispositivi Android 5.1, il DPC personale deve invece ascoltare ACTION_MANAGED_PROFILE_ADDED).
  2. Se applicabile, il DPC personale deve rilasciare i privilegi amministrativi del dispositivo prima di disattivarlo.
  3. Il DPC personale avvia una richiesta di disattivazione setApplicationEnabledSetting con il parametro COMPONENT_ENABLED_STATE_DISABLED.
  4. L'utente può riattivare il DPC personale da Google Play.

Considerazioni sull'implementazione per la modalità Proprietario del dispositivo

Di seguito sono riportati alcuni aspetti da considerare quando scrivi il DPC per implementare la modalità operativa proprietario del dispositivo.

Il dispositivo deve essere nuovo o di cui sono stati ripristinati i dati di fabbrica

Devi eseguire il provisioning della modalità di funzionamento del proprietario del dispositivo durante la configurazione iniziale di un nuovo dispositivo o dopo un ripristino dei dati di fabbrica. Non è possibile eseguire il provisioning della modalità Proprietario del dispositivo su un dispositivo in nessun altro momento.

La modalità Proprietario del dispositivo fornisce al DPC il controllo completo su un dispositivo. Se è stato consentito il provisioning della modalità di proprietario del dispositivo dopo la configurazione iniziale:

  • Il malware potrebbe creare il proprietario di un dispositivo e assumere il controllo del dispositivo.
  • Potrebbero verificarsi problemi di privacy se sul dispositivo erano già presenti alcuni dati o app utente.

Configurare la modalità proprietario del dispositivo solo sui dispositivi di proprietà dell'azienda

Devi eseguire il provisioning della modalità proprietario del dispositivo solo sui dispositivi che identifichi come di proprietà dell'azienda del tuo cliente. Puoi verificarlo rilevando un identificatore univoco del dispositivo (ad esempio un numero di serie) o utilizzando un insieme dedicato di account autorizzati alla registrazione dei dispositivi tramite il tuo criterio EMM.

Se non riesci a verificare la proprietà aziendale di un dispositivo, devi creare un meccanismo di sicurezza in modo che non venga eseguito il provisioning per errore della modalità proprietario del dispositivo. Ad esempio, potresti chiedere all'utente del dispositivo di confermare o rispondere affermativamente prima di eseguire il provisioning della modalità proprietario del dispositivo.

Attiva le app di sistema

Quando il DPC esegue il provisioning di un profilo di lavoro, si presume che tutte le app di sistema senza icone in Avvio applicazioni siano fondamentali per il dispositivo e ne venga automaticamente consentita l'esecuzione nel profilo di lavoro. Le app di sistema con icone in Avvio applicazioni sono considerate facoltative e puoi decidere se attivarle.

Attivare le app di sistema tramite Google Play

Attivare le app di sistema tramite Google Play è facile e gli utenti ricevono gli aggiornamenti delle app non appena sono disponibili.

Abilita le app di sistema utilizzando le API del framework Android

Se vuoi che gli utenti vedano le app di sistema non appena iniziano a utilizzare i propri dispositivi, attiva le app di sistema come parte del processo di provisioning del dispositivo. Il DPC attiva le app di sistema per nome del pacchetto o per intent utilizzando DevicePolicyManager.enableSystemApp().

Esistono diversi modi per identificare le app di sistema che vuoi abilitare e presentare nella console EMM agli amministratori IT.

Creare cataloghi di app di sistema

In questo metodo, ogni dispositivo determina quali app sono presenti sul dispositivo e invia questi dati alla console EMM. La console EMM visualizza dinamicamente questi dati durante la creazione dei criteri relativi ai dispositivi, consentendo all'amministratore IT di gestire le app per app.

  1. Se non è stato ancora eseguito il provisioning del profilo di lavoro sul dispositivo, puoi estrarre un elenco di tutte le app con icone in Avvio applicazioni su un dispositivo utilizzando queryIntentActivities():
    private List getAppsWithLauncher() {
    Intent i = new Intent(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    return getPackageManager().queryIntentActivities(i, 0);
    }
  2. Se è già stato eseguito il provisioning del profilo di lavoro sul dispositivo, esegui il pull di un elenco di tutte le app nel profilo di lavoro utilizzando PackageManager.GET_DISABLED_COMPONENTS e PackageManager.GET_UNINSTALLED_PACKAGES.
  3. Per trovare le app di sistema nell'elenco, controlla FLAG_SYSTEM, che indica se un'app è installata nell'immagine di sistema del dispositivo.

Vantaggi:

  • Offre agli amministratori IT un quadro completo delle app su tutti i dispositivi.
  • Offre un controllo granulare sulle app attivate.

Contro:

  • Poiché ogni dispositivo ha un catalogo di app diverso, è difficile applicare un modello di configurazione di un singolo criterio a più tipi di dispositivi.
  • Può essere difficile presentare il volume di app specifiche per OEM in modo significativo per gli amministratori IT.

Classificare le app di sistema in base alla funzionalità

Quando un amministratore IT vuole attivare un'app di sistema per un gruppo di dispositivi, seleziona un'app generica in base alla funzionalità, ad esempio "Browser di sistema". Il DPC consente quindi tutte le app di sistema per quell'intent.

Vantaggi:

  • Abilitazione semplice e basata su funzionalità per gli amministratori IT.
  • Assicura funzionalità coerenti su una varietà di dispositivi (almeno per i casi d'uso comuni).

Contro:

  • Limita le app di sistema a quelle supportate su tutti i tipi di dispositivi.
  • Gli amministratori IT potrebbero voler eseguire il push di una versione OEM di un'app (ad esempio un browser Samsung®), ma non di un'altra (ad esempio un browser LG®).
  • Gli amministratori IT potrebbero non voler eseguire il push di più app, ma non possono impedirlo quando sono presenti più gestori di intent.

Supportare solo le app di sistema approvate

Collabori con l'OEM per identificare i pacchetti OEM specifici e supportare solo quei pacchetti all'interno della console EMM. Ciò ti consente inoltre di catalogare le configurazioni gestite per l'app OEM, che altrimenti non avresti notato perché l'app OEM non è ospitata su Google Play.

Vantaggi:

  • Semplifica notevolmente il flusso di lavoro di integrazione ed elimina i casi limite che risultano problematici nelle prime due opzioni.
  • Puoi catalogare le configurazioni gestite per l'app OEM e presentarle nella console EMM per gli amministratori IT.
  • Consente stretti rapporti con gli OEM per il supporto dei dispositivi di punta.

Contro:

  • Meno scalabile e, di conseguenza, riduce la scelta dei consumatori.

Considerazioni sull'implementazione per la modalità legacy

Di seguito sono riportati alcuni aspetti da considerare quando scrivi il DPC per implementare la modalità operativa legacy.

Determinare se un dispositivo supporta i profili di lavoro

Per i dispositivi che non supportano i profili di lavoro, puoi eseguire il provisioning della modalità operativa legacy. Un dispositivo non supporta i profili di lavoro quando:

  • Deve avere una versione di Android precedente alla 5.0.
  • Ha una scarsa quantità di RAM, anche se esegue una versione di Android successiva alla 5.0.

Per determinare se i profili di lavoro sono supportati, il DPC può utilizzare PackageManager.

if (!getPackageManager().hasSystemFeature(
    PackageManager.FEATURE_MANAGED_USERS)) {
  // Use legacy mode
  ...
}

Scenari di test per il tuo DPC (controller criteri dispositivi)

Il DPC di test è un'app open source fornita da Google per testare le funzionalità aziendali nella tua app DPC. Il DPC di test è disponibile su github o Google Play. Puoi utilizzare il DPC di prova per:

  • Simulare funzionalità in Android
  • Imposta e applica i criteri
  • Imposta restrizioni per app e intent
  • Configurare i profili di lavoro
  • Configurare i dispositivi Android completamente gestiti

Sebbene il DPC di prova sia pensato principalmente come veicolo per testare la soluzione aziendale per Android, puoi utilizzarlo anche come sorgente di codice di esempio per le funzionalità Android.

Personalizzare il provisioning

Durante il provisioning dei dispositivi, l'interfaccia utente del sistema mostra un colore predefinito nella barra di stato e un logo predefinito nella parte superiore dello schermo. Imposta colori e loghi personalizzati per fornire una transizione visiva coerente tra il DPC e l'interfaccia di sistema o per consentire agli amministratori di farlo utilizzando la console EMM. Ad esempio, un amministratore potrebbe caricare un logo aziendale o personalizzare l'aspetto delle schermate che mostrano notifiche.

Il DPC applica le scelte di colore e logo utilizzando gli extra DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR e DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI.

Per impostare un colore personalizzato, utilizza EXTRA_PROVISIONING_MAIN_COLOR per impostare un numero intero che indichi il colore predominante da visualizzare durante il provisioning dei dispositivi. Inserisci l'extra (costante) in un intent con ACTION_PROVISION_MANAGED_PROFILE o ACTION_PROVISION_MANAGED_DEVICE.

Per vedere come sono rappresentati i numeri interi, vedi Colore. Per un esempio, vedi MAIN_COLOR nell'app TestDPC.

Per impostare un logo personalizzato, utilizza EXTRA_PROVISIONING_LOGO_URI per impostare un'immagine da visualizzare nella parte superiore dello schermo durante il provisioning del dispositivo. Inserisci il valore aggiuntivo (costante) in un intent con ACTION_PROVISION_MANAGED_PROFILE o ACTION_PROVISION_MANAGED_DEVICE. Assicurati che la densità dei pixel dell'immagine sia ragionevole per il dispositivo.

Per un esempio, vedi LOGO_URI nell'app TestDPC.

Metodo codice QR

Il metodo di provisioning del codice QR consente di impostare e configurare la modalità proprietario del dispositivo eseguendo la scansione di un codice QR dalla configurazione guidata. Il codice QR contiene un payload di coppie chiave-valore con tutte le informazioni necessarie al DPC per eseguire il provisioning di un dispositivo.

La tua console EMM dovrebbe offrire agli amministratori IT un modo per creare codici QR per i dispositivi di cui vogliono eseguire il provisioning. L'amministratore IT invia i codici QR agli utenti finali, che a loro volta eseguono il provisioning dei dispositivi scansionando i codici QR.

Casi d'uso per il provisioning del codice QR

Alcuni dispositivi, ad esempio i tablet, non supportano la tecnologia NFC. Il provisioning del codice QR è un modo semplice per eseguire il provisioning di un parco dispositivi distribuito di dispositivi che non supportano la tecnologia NFC. Un amministratore IT può inviare codici QR agli utenti per consentire il provisioning gestito dagli utenti.

Il provisioning del codice QR non richiede un'identità Google, ad esempio un dominio Google o un Account Google. Le organizzazioni che utilizzano Android ma non G Suite, non hanno un'identità Google.

Come l'NFC, il provisioning del codice QR consente di eseguire implementazioni kiosk e monouso in cui non è necessaria o desiderare un'identità Google (o qualsiasi identità). Ad esempio, un dispositivo kiosk in uno store non appartiene a nessuno e non deve avere l'identità di un utente finale.

Crea un codice QR

Un codice QR valido per il provisioning del codice QR è una stringa JSON (JavaScript® Object Notation) con codifica UTF-8. Puoi includere queste proprietà in un codice QR valido:

Sempre obbligatorio

Obbligatorio se un DPC non è già installato sul dispositivo

Consigliato se il dispositivo non è già connesso al Wi-Fi

Facoltativo

Questo esempio crea un codice QR valido:

{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"com.emm.android/com.emm.android.DeviceAdminReceiver",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":
"gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://path.to/dpc.apk",
    "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
    "android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork",
    "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
        "dpc_company_name": "Acme Inc.",
        "emm_server_url": "https://server.emm.biz:8787",
        "another_custom_dpc_key": "dpc_custom_value"
    }
}

Procedura di provisioning del codice QR

  1. La configurazione guidata chiede all'utente di toccare la schermata di benvenuto sei volte. I tocchi devono essere fatti nello stesso punto dello schermo.
  2. La configurazione guidata chiede all'utente di connettersi a Internet in modo che possa scaricare un lettore di codici QR.
  3. Google Play Services scarica un modulo che contiene un motore di riconoscimento dei codici QR.
  4. L'utente esegue la scansione del codice QR fornito dall'amministratore IT.
  5. La configurazione guidata scarica l'app DPC e avvia il processo di provisioning del proprietario del dispositivo utilizzando ACTION_PROVISION_MANAGED_DEVICE.

Metodo degli account della versione gestita di Google Play

Un DPC può utilizzare il metodo di provisioning degli account Google Play gestiti per configurare la modalità proprietario del dispositivo o la modalità proprietario del profilo. Questo metodo di provisioning è rivolto alle organizzazioni che attualmente non utilizzano G Suite.

Il metodo di provisioning degli account Google Play gestiti utilizza la DPC Support Library. Questa libreria client garantisce il corretto funzionamento degli account della versione gestita di Google Play. Mantiene inoltre la compatibilità con gli aggiornamenti futuri del processo di provisioning degli account Google Play gestiti.

Prerequisiti per il provisioning dei dispositivi

  • L'ID azienda viene creato e registrato con un'identità EMM e l'ESA viene impostato, come descritto in Creare e registrare un'azienda.
  • L'identità aziendale dell'utente è nota nella console EMM.
  • L'utente può accedere all'app DPC utilizzando le credenziali accettate dalla console EMM, in genere le credenziali email aziendali.

Configurare la modalità di proprietario del profilo

Puoi eseguire il provisioning della modalità operativa di proprietario del profilo su un dispositivo che viene utilizzato come dispositivo personale in uno scenario BYOD.

  1. L'utente scarica manualmente il DPC da Google Play e lo avvia.
  2. Il DPC esegue il provisioning del profilo di lavoro utilizzando ACTION_PROVISION_MANAGED_PROFILE.
  3. Completa i passaggi di configurazione finali.

Configura la modalità proprietario del dispositivo

Devi eseguire il provisioning della modalità di funzionamento del proprietario del dispositivo durante la configurazione iniziale di un nuovo dispositivo o dopo un ripristino dei dati di fabbrica. Non è possibile eseguire il provisioning della modalità Proprietario del dispositivo su un dispositivo in nessun altro momento.

Durante la configurazione del dispositivo, l'utente inserisce un token speciale specifico per DPC quando gli viene chiesto di aggiungere un account. Un token ha il formato "afw#DPC_IDENTIFIER". Per un provider EMM denominato ACME, "afw#acme" installerebbe il DPC predefinito dell'EMM ACME. Ogni EMM deve richiedere a Google un identificatore DPC specifico prima di poterlo utilizzare nel processo di provisioning.

  1. L'utente accende un dispositivo nuovo o di cui è stato eseguito il ripristino dei dati di fabbrica e viene avviata la configurazione guidata.
  2. Quando viene richiesto di aggiungere un account, l'utente inserisce un token speciale nel formato "afw#DPC_IDENTIFIER" che identifica il DPC per il tuo EMM.
  3. Utilizzando l'identificatore DPC nel token, la configurazione guidata aggiunge un Account Google temporaneo al dispositivo. Questo account temporaneo viene utilizzato solo per scaricare da Google Play il DPC (controller criteri dispositivi) per il tuo provider EMM e viene rimosso nei passaggi di configurazione finali.
  4. Il DPC esegue il provisioning del dispositivo utilizzando ACTION_PROVISION_MANAGED_DEVICE.
  5. Completa i passaggi di configurazione finali.

Configura la modalità precedente

Puoi eseguire il provisioning della modalità operativa legacy su un dispositivo utilizzato in uno scenario BYOD (Bring your own device, Porta il tuo dispositivo) come dispositivo personale, se il dispositivo non supporta i profili di lavoro.

  1. L'utente scarica manualmente il DPC da Google Play e lo avvia.
  2. Il DPC si autodefinisce amministratore del dispositivo.
  3. Completa i passaggi di configurazione finali.

Passaggi finali di configurazione per tutte le modalità di funzionamento

Esegui questi passaggi solo dopo il completamento dei passaggi iniziali per la configurazione della modalità proprietario del profilo, della modalità Proprietario del dispositivo o della modalità legacy.

  1. Il DPC verifica che il dispositivo possa supportare gli account della versione gestita di Google Play inizializzando la DPC Support Library:
    AndroidForWorkAccountSupport androidForWorkAccountSupport = 
        new AndroidForWorkAccountSupport(context, admin);
    androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
  2. Se configuri la modalità proprietario del dispositivo su un dispositivo, questo passaggio rimuove l'Account Google temporaneo aggiunto per scaricare il DPC.
  3. L'utente accede al DPC utilizzando le proprie credenziali EMM. In genere si tratta di credenziali email aziendali.
  4. Il DPC richiede alla console EMM le credenziali dell'account Google Play gestito per l'utente aziendale autenticato.
  5. Se la console EMM non dispone di un userId Google Play per l'utente, crea un nuovo utente chiamando Users.insert(). Se esegui il provisioning della modalità di proprietario del dispositivo, specifica un account del dispositivo (per le implementazioni dedicate dei dispositivi) o un account utente (per le implementazioni di proprietà dell'azienda).

    Nota: poiché gli ID utente sono specifici per EMM, non possono essere riutilizzati se la registrazione dell'azienda è stata annullata e la si registra di nuovo con un altro EMM.

  6. Imposta i criteri del dispositivo chiamando Devices.update. Devi impostare i criteri prima di aggiungere l'account della versione gestita di Google Play al dispositivo, altrimenti il criterio non verrà applicato per un breve periodo di tempo dopo l'aggiunta dell'account al dispositivo.

  7. La console EMM richiede le credenziali dell'account per userId chiamando Users.generateAuthenticationToken(). Questo token di autenticazione è di breve durata e non può essere riutilizzato. Il DPC deve utilizzare il token per aggiungere l'account in modo programmatico (non è utile per l'utente finale).
  8. L'API EMM di Google Play restituisce il token di autenticazione alla console EMM.
  9. La console EMM inoltra il token di autenticazione al DPC.
  10. Il DPC aggiunge l'account Google Play gestito al dispositivo utilizzando
    androidForWorkAccountSupport.addAndroidForWorkAccount(token,
        accountAddedCallback);

Metodo Account Google

Un DPC può utilizzare il metodo di provisioning dell'Account Google per configurare la modalità proprietario del dispositivo, la modalità proprietario del profilo o la modalità legacy. Con il metodo di provisioning dell'Account Google, il DPC guida l'utente attraverso la procedura di provisioning dopo che ha aggiunto il proprio Account Google durante la configurazione iniziale del dispositivo.

Quando un utente inserisce le credenziali del proprio Account Google:

  • L'account utente viene autenticato dal server di autenticazione di Google.
  • Il server di autenticazione comunica quindi con il server aziendale per vedere se il dominio dell'account è registrato come dominio G Suite o come dominio gestito da EMM.
  • In questo caso, il sistema scarica automaticamente da Google Play il DPC associato al dominio e lo installa.

Configurare la modalità di proprietario del profilo

Puoi eseguire il provisioning della modalità operativa di proprietario del profilo durante la configurazione iniziale di un dispositivo o quando l'utente aggiunge un account utilizzando Impostazioni > Aggiungi account.

  1. L'autenticazione dell'account viene avviata da un utente durante la configurazione guidata o da Impostazioni > Aggiungi account.
  2. GMSCore avvia il provisioning del profilo di lavoro utilizzando ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE.

  3. Il DPC viene scaricato automaticamente sul dispositivo e avviato utilizzando il gestore ACTION_GET_PROVISIONING_MODE per verificare che il provisioning del profilo di lavoro sia supportato dal DPC. EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informazioni aggiuntive per il profilo di lavoro, come l'indirizzo email. Il DPC riceverà anche qui il parametro is_setup_ dello strumento nell'ambito di questo bundle. Questo bundle verrà incluso nei gestori ACTION_GET_PROVISIONING_MODE e ACTION_ADMIN_POLICY_COMPLIANCE.
    EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: nome dell'account autenticato di cui eseguire la migrazione nel nuovo profilo di lavoro.

  4. La piattaforma esegue il provisioning del profilo di lavoro.

  5. Quando viene eseguito il provisioning del profilo di lavoro, il DPC riceve la trasmissione
    ACTION_PROFILE_PROVISIONING_COMPLETE. Il gestore ACTION_ADMIN_POLICY_COMPLIANCE del DPC è stato lanciato nel profilo di lavoro.
    Una volta creato il profilo di lavoro, anche il DPC viene eseguito all'interno del profilo. Il DPC esegue il push dei criteri per l'Account Google gestito, garantisce che il dispositivo non sia in uno stato di compromissione e verifica che i criteri siano applicati (ad esempio, la richiesta di una password).

  6. Il DPC nel profilo personale si disattiva se stesso o l'utente lo rimuove.

Configurare la modalità proprietario del dispositivo o COPE

Devi eseguire il provisioning della modalità di funzionamento del proprietario del dispositivo durante la configurazione iniziale di un nuovo dispositivo o dopo un ripristino dei dati di fabbrica. La modalità Proprietario del dispositivo non può essere aggiunta a un dispositivo in nessun altro momento.

  1. L'autenticazione dell'account viene avviata da un utente della configurazione guidata.
  2. GMSCore avvia il provisioning del proprietario del dispositivo utilizzando ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE. 3.Il DPC viene scaricato automaticamente sul dispositivo e viene avviato utilizzando il gestore GET_PROVISIONING_MODE per scegliere la modalità di provisioning desiderata. EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informazioni aggiuntive per il profilo di lavoro, ad esempio impostazioni internazionali, Wi-Fi e indirizzo email. Il DPC riceverà anche qui il parametro is_setup_ dello strumento nell'ambito di questo bundle. Questo bundle verrà incluso nei gestori ACTION_GET_PROVISIONING_MODE e ACTION_ADMIN_POLICY_COMPLIANCE.
  3. La piattaforma esegue il provisioning del dispositivo nella modalità di provisioning desiderata.
  4. Una volta eseguito il provisioning del dispositivo, il DPC riceve queste trasmissioni e viene lanciato il gestore ACTION_ADMIN_POLICY_COMPLIANCE del DPC:
    ACTION_READY_FOR_USER_INITIALIZATION
    ACTION_PROFILE_PROVISIONING_COMPLETE.

  5. Il DPC utilizza il valore Global.DEVICE_PROVISIONED per verificare che il dispositivo sia nuovo o di cui è stato eseguito il ripristino dei dati di fabbrica (provisioning non eseguito):
    0 - Provisioning non eseguito.
    1: Provisioning effettuato.

  6. Il DPC completa il processo di provisioning eseguendo il push dei criteri per il dispositivo gestito, garantendo che il dispositivo non sia in stato di compromissione e verificando che i criteri siano applicati (ad esempio, la richiesta di una password).

Configura la modalità precedente

Puoi eseguire il provisioning della modalità operativa precedente durante la configurazione iniziale di un dispositivo o quando l'utente aggiunge un account in Impostazioni > Aggiungi account. Di seguito sono riportati i requisiti per rendere disponibile la versione gestita di Google Play agli utenti che dispongono di un Account Google:

  • L'Account Google fa parte di un dominio Google gestito.
  • Il dominio Google gestito è configurato per Android con un EMM vincolato all'API EMM di Google Play.

Se vuoi gestire le app solo su dispositivi precedenti, non hai bisogno di un DPC. In questo caso, l'utente aggiunge il proprio Account Google in Impostazioni > Aggiungi account. La gestione delle app include la selezione delle app consigliate, la messa a disposizione delle app private, l'acquisto e la distribuzione delle licenze.

Se vuoi che il DPC aggiunga l'Account Google:

  1. L'utente scarica il tuo DPC da Google Play e lo avvia.
  2. Il DPC aggiunge l'Account Google gestito utilizzando l'indirizzo AccountManager.addAccount(). Consulta TestDPC per un esempio di implementazione dell'aggiunta di un Account Google specifico utilizzando AccountManager.KEY_ACCOUNT_NAME.
  3. (Facoltativo) Il DPC si autodefinisce amministratore del dispositivo. In qualità di amministratore del dispositivo, il DPC ha funzionalità di gestione dei dispositivi che vanno oltre la gestione delle app.

Considerazioni sull'implementazione del metodo dell'Account Google

  • Il DPC dovrebbe rilevare il flusso di autenticazione dell'Account Google cercando elementi aggiuntivi specifici nell'intent di lancio utilizzato (vedi LaunchIntentUtil):

    • Account di tipo android.accounts.Account: indica che l'account è stato aggiunto dalla configurazione guidata o da Impostazioni > Aggiungi account, che richiede l'avvio del DPC (controller criteri dispositivi) per gestire il dispositivo o il profilo.
    • is_setup_wizard di tipo booleano: se il valore è true, il DPC è stato avviato nella configurazione guidata prima del completamento della procedura guidata, altrimenti da Impostazioni > Aggiungi account o da un altro flusso.

    Un semplice controllo per verificare se il DPC è stato lanciato nell'ambito del metodo dell'Account Google è:

boolean isSynchronousAuthLaunch(Intent launchIntent) {
  return launchIntent.hasExtra(“is_setup_wizard”);
}
  • Il DPC non deve chiamare finish() prima del termine della configurazione. Dovrebbe anche restituire un codice di risultato positivo (ad esempio RESULT_OK) poiché il DPC viene avviato con startActivityForResult() e attende un risultato.

    Il DPC deve attendere un codice risultato del processo di provisioning prima di chiamare finish() se il flusso di configurazione del DPC raggiunge il punto di invio di un intent ACTION_PROVISION_*. Utilizza i callback startActivityForResult() e onActivityResult() quando avvii gli intent ACTION_PROVISION_*. (vedi LaunchActivity e SetupSyncAuthManagement per alcuni esempi).

    A causa della natura potenzialmente asincrona del processo di configurazione, il DPC non può fare affidamento su un codice risultato RESULT_OK per indicare che il provisioning è riuscito. L'unico modo garantito è affidarsi ai callback DeviceAdminReceiver per il completamento del provisioning. RESULT_CANCELED indica che l'utente ha eseguito il backup in una parte sincrona del flusso di configurazione e il DPC dovrebbe reagire a questa situazione.

    In questo esempio, il DPC avvia il provisioning e attende il codice risultato da un'attività:

Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE);
startActivityForResult(intent, REQUEST_MANAGED_PROFILE);
    ...
    @Override
        public void onActivityResult(int req, int res, Intent i) {
            if (req == REQUEST_MANAGED_PROFILE) {
                if (res == Activity.RESULT_OK) {
                    setResult(Activity.RESULT_OK);
                    finish();
                } else {
                    Toast.makeText(this, “Provisioning failed”,
                            Toast.LENGTH_SHORT).show();
                }
            }
        }
  • Il DPC non deve tentare di configurare la modalità operativa del proprietario del dispositivo se è già stato eseguito il provisioning del dispositivo (vedi ProvisioningStateUtil.isDeviceProvisioned()). In questo esempio, il DPC controlla se è stato eseguito il provisioning del dispositivo:
public static boolean isDeviceProvisioned(Context context) {
ContentResolver cr = context.getContentResolver();
    return
Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0;
}
  • Campo facoltativo. Il DPC può usare l'extra EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE all'avvio del provisioning per ritrasmettere le informazioni sullo stato al suo DeviceAdminReceiver (che, nel caso del proprietario del profilo, viene eseguito all'interno del profilo di lavoro). TestDPC utilizza questo extra per inserire un insieme diverso di attività nel flusso dell'Account Google dopo il completamento del provisioning. Per informazioni dettagliate, vedi DeviceAdminReceiver.
public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver
{

    @Override
    public void onProfileProvisioningComplete(Context context, Intent intent) {
        // Retrieve the admin extras bundle, which we can use to determine the original context for
        // Test DPC’s launch.
        PersistableBundle extras = intent.getParcelableExtra(
                EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE);
        ...
  • Per configurare un profilo di lavoro, il DPC deve eseguire la migrazione dell'account aggiunto al nuovo profilo di lavoro. A questo scopo, il DPC deve trasmettere l'account fornito nell'intent di lancio per ACTION_PROVISION_MANAGED_PROFILE.
  • Il DPC deve fornire all'utente un chiaro invito all'azione (ad esempio un pulsante Fine) per uscire dall'app al termine della configurazione, in modo che l'utente non pensi di aver raggiunto una strada senza uscita.
  • Il DPC deve utilizzare il tema della configurazione guidata o la libreria di layout in modo che l'esperienza utente sia fluida e sembri ben integrata.

Metodo NFC

Un DPC può utilizzare il metodo di provisioning NFC per configurare la modalità proprietario del dispositivo. Nel metodo di provisioning NFC, o tag NFC, crei un'app di programmazione NFC contenente i criteri iniziali e la configurazione, le impostazioni e i dettagli di provisioning del Wi-Fi richiesti dal cliente per configurare la modalità operativa del proprietario del dispositivo. Quando tu o il tuo cliente installate l'app di programmatore NFC su un dispositivo Android, questo diventa il dispositivo programmatore.

Per eseguire il provisioning di un dispositivo, l'amministratore IT prende un nuovo dispositivo dalla confezione e lo mette contro il dispositivo del programmatore. Il blocco trasferisce le configurazioni al dispositivo affinché si connetta a Internet e scarichi i criteri e le impostazioni appropriati. Il dispositivo viene quindi gestito dal tuo DPC.

Dopo il provisioning di un dispositivo, per un breve periodo di tempo Google Play mostra i contenuti per i consumatori non gestiti anziché le app e le raccolte approvate che dovrebbero essere visualizzate. Questo ritardo può durare da pochi minuti a un'ora.

Crea l'app di programmatore e il dispositivo di programmazione NFC

  1. Scarica l'app di esempio per il programmatore NFC dalla pagina di esempi aziendali di GitHub. Puoi utilizzare il campione così com'è senza aggiunte oppure puoi modificarlo per i tuoi valori predefiniti. Per ulteriori informazioni, consulta il codice di esempio dei parametri predefiniti.
  2. Installa l'app di programmazione sul dispositivo scelto.
  3. Avvia l'app di programmatore NFC e seleziona LoadDefaults (Carica valori predefiniti) per com.example.android.apis. Questo testo può variare a seconda dei parametri predefiniti impostati.

Eseguire il provisioning del dispositivo di un cliente

  1. Ricarica il dispositivo del programmatore con un dispositivo nuovo o di cui sono stati ripristinati i dati di fabbrica.
  2. Verifica che il dispositivo rimanga nella schermata di benvenuto iniziale visualizzata all'avvio. Il testo è specificato in Ready to send:{...} nell'app di programmazione.
  3. Attendi che il DPC:
    1. Cripta il dispositivo.
    2. Se si tratta di un dispositivo CDMA (Code-Division Multiple Access): attiva il telefono mentre viene visualizzata un'interfaccia utente di telefonia (non è necessaria alcuna interazione).
    3. Configura la connessione Wi-Fi.
    4. Scarica il file .apk per com.example.android.apis.
    5. Installa com.example.android.apis.
    6. Imposta Amministratore dispositivo di esempio in com.example.android.apis come proprietario del dispositivo.
    7. Mostra un "toast" riuscito quando il proprietario del dispositivo viene attivato.
  4. Dopo essere tornato alla home page (la configurazione guidata viene ignorata automaticamente), verifica che com.example.android.apis sia impostato come proprietario del dispositivo:
    1. In Impostazioni > Sicurezza > Amministratori dispositivo, assicurati che non sia possibile rimuovere Amministratore dispositivo di esempio.
    2. In Impostazioni > Utenti > Utenti e profili > Tu (proprietario), assicurati che Proprietario sia l'unico account disponibile (un dispositivo può avere un solo proprietario attivo alla volta).

Esempi di codice dall'app di programmazione NFC

Le sezioni dell'app di programmatore NFC che troverai particolarmente utili contengono commenti incorporati. Per visualizzare tutti i codici di esempio nell'app di programmazione NFC, decomprimi il file .apk di esempio utilizzando un decompilatore Java.

Metodo startizePropertyUI()

Il metodo initializePropertyUI() inizializza gli elementi dell'interfaccia utente (caselle di testo e caselle di controllo modificabili) nell'app di programmatore NFC. Le modifiche di questi elementi vengono sincronizzate con le coppie chiave-valore (KVP) contenute dalla variabile mProps. La variabile mProps viene inviata a un dispositivo quando si verifica un contatto NFC.

private void initializePropertyUI(int paramInt1, int paramInt2, final String
paramString)
{
    Log.d("DeviceProvisioningProgrammerSample","initializeProperty for " + paramString);
    final EditText localEditText = (EditText)findViewById(paramInt1);
    final CheckBox localCheckBox =(CheckBox)findViewById(paramInt2);

/* Here we initialize text boxes so that when their text is edited the changes are synced to mProps. */

    if(localEditText != null)
      localEditText.addTextChangedListener(new TextWatcher()
      {
        public void afterTextChanged(Editable paramAnonymousEditable)
        {
        }
        public void beforeTextChanged(CharSequence paramAnonymousCharSequence, 
        int paramAnonymousInt1, int paramAnonymousInt2, int paramAnonymousInt3)
        {
      }
        public void onTextChanged(CharSequence paramAnonymousCharSequence, 
        int paramAnonymousInt1, int paramAnonymousInt2, in paramAnonymousInt3)
        {
          if ((localCheckBox != null) && (localCheckBox.isChecked()))
          {
              DeviceProvisioningProgrammerSample.this.mProps.put(paramString,
              localEditText.getText().toString());
              DeviceProvisioningProgrammerSample.this.refreshMessageView();
          }
        }
      });

/* Here we initialize check boxes, so that when they are unchecked, the edit 
boxes are disabled, and the corresponding KVPs are removed from mProps. When 
they are checked the KVPs are re added, and the text boxes are enabled. */

    if (localCheckBox != null) localCheckBox.setOnCheckedChangeListener
    (new CompoundButton.OnCheckedChangeListener()
      {
        public void onCheckedChanged(CompoundButton paramAnonymousCompoundButton, 
        boolean paramAnonymousBoolean)
        {
          Log.d("DeviceProvisioningProgrammerSample", "onCheckedChanged for 
          " + localEditText.getText().toString() + " isChecked = " + paramAnonymousBoolean);
         if (paramAnonymousBoolean)
          {
            localEditText.setEnabled(true);
            DeviceProvisioningProgrammerSample.this.mProps.put(paramString, 
            localEditText.getText().toString());
            DeviceProvisioningProgrammerSample.this.refreshMessageView(); return;
          }
          localEditText.setEnabled(false);
            DeviceProvisioningProgrammerSample.this.mProps.remove(paramString);
            DeviceProvisioningProgrammerSample.this.refreshMessageView();
      }
    });
}

Parametri predefiniti

Questo esempio di codice imposta i valori predefiniti che verranno inviati a un dispositivo in caso di contatto NFC. Alcuni parametri configurabili non sono inclusi nell'esempio, ma potresti doverli includere nell'implementazione. Puoi trovare i parametri non presenti nell'esempio qui.

public void loadDefaults1(View paramView)
{
/* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME */
((EditText)findViewById(2131034114)).setText("com.example.android.apis");
((CheckBox)findViewById(2131034113)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION */
((EditText)findViewById(2131034116)).setText
("https://sites.google.com/site/apidemodownload/somepage/ApiDemos.apk");
((CheckBox)findViewById(2131034115)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM (note: must be URL-safe)*/
((EditText)findViewById(2131034118)).setText("ZYk5xsY0xqic51CTqB9kLiMLqwk");
((CheckBox)findViewById(2131034117)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_WIFI_SSID */
((EditText)findViewById(2131034120)).setText("\"GoogleGuest\"");
((CheckBox)findViewById(2131034119)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_TIME_ZONE*/
((EditText)findViewById(2131034122)).setText("Europe/London");
((CheckBox)findViewById(2131034121)).setChecked(true);
((CheckBox)findViewById(2131034123)).setChecked(false);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_LOCALE
((EditText)findViewById(2131034126)).setText("en_GB");
((CheckBox)findViewById(2131034125)).setChecked(true);
}

Metodo onCreate()

Il metodo onCreate() inizializza l'app di programmatore NFC e le sue funzioni e caratteristiche. Le stringhe android.app.extra corrispondono alle stringhe descritte nella documentazione di DevicePolicyManager. Ad esempio: DevicePolicyManager.EXTRA_ PROVISIONING_WIFI_SSID == "android.app.extra.PROVISIONING_WIFI_SSID".

protected void onCreate(Bundle paramBundle)
{
Log.d("DeviceProvisioningProgrammerSample", "onCreate");
super.onCreate(paramBundle);
    setContentView(2130903040);
    this.mTextView = ((TextView)findViewById(2131034112));
    this.mProps = new Properties();
initializePropertyUI(2131034114, 2131034113,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME");
initializePropertyUI(2131034116, 2131034115,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION");
initializePropertyUI(2131034118, 2131034117,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM");
initializePropertyUI(2131034120, 2131034119,
"android.app.extra.PROVISIONING_WIFI_SSID");
initializePropertyUI(2131034122, 2131034121,
"android.app.extra.PROVISIONING_TIME_ZONE");
initializePropertyUI(2131034124, 2131034123,
"android.app.extra.PROVISIONING_LOCAL_TIME");
initializePropertyUI(2131034126, 2131034125,
"android.app.extra.PROVISIONING_LOCALE");
    refreshMessageView();

/*  Next we get the default NFC adapter for the Android device being used, and define 
CreateNdefMessageCallback() for that adapter, which is invoked when another NFC device
capable of NDEF push (Android Beam) is within range. CreateNdefMessageCallback is an interface
that has one abstract method that needs to be defined. That method, createNdefMessage,
creates the message to be pushed. */

NfcAdapter.getDefaultAdapter(this).setNdefPushMessageCallback(new
NfcAdapter.CreateNdefMessageCallback()
    {
      public NdefMessage
createNdefMessage(NfcEvent paramAnonymousNfcEvent)
      {

/* Here ndefMessage creates an output stream which contains the values from mProps. */

Log.d("DeviceProvisioningProgrammerSample", "Sending Nfc");
ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
        try
        {
DeviceProvisioningProgrammerSample.this.mProps.store(localByteArrayOutputStream,
DeviceProvisioningProgrammerSample.this.getString(2130968578));
DeviceProvisioningProgrammerSample.this.mTextView.post(new Runnable()
{
            public void run()
            {
DeviceProvisioningProgrammerSample.this.refreshMessageView();
            }
      });

/* Here NdefMessage is created containing an NdefRecord. The NdefRecord contains its record 
type, and a byte array derived from the mProps output stream. */

          return new NdefMessage(new NdefRecord[] {
NdefRecord.createMime("application/com.android.managedprovisioning",
localByteArrayOutputStream.toByteArray()) });
        }
        catch
(IOException localIOException)
        {
          while (true)
Log.e("DeviceProvisioningProgrammerSample", "io exception", localIOException);
       }
      }
    }
    , this, new Activity[0]);
}

Altre risorse

NFC avanzata descrive argomenti NFC avanzati, come l'utilizzo di varie tecnologie di tag, la scrittura di tag NFC e l'invio in primo piano.

Metodo installazione DPC manuale

Per configurare la modalità proprietario del profilo utilizzando il metodo di provisioning per l'installazione manuale del DPC, l'utente scarica il tuo DPC da Google Play e lo installa. Successivamente, guida l'utente nei passaggi rimanenti della procedura di configurazione del proprietario del profilo per l'Account Google gestito.

Il DPC può aggiungere l'Account Google gestito prima o dopo la creazione del profilo di lavoro. Ad esempio, il DPC può creare un profilo di lavoro basato sulle credenziali EMM di un utente anziché richiedere prima l'Account Google gestito.

Configurare la modalità di proprietario del profilo

Aggiungi prima l'Account Google gestito

  1. L'utente scarica il tuo DPC da Google Play e lo installa.
  2. Il DPC aggiunge l'Account Google gestito prima di creare il profilo di lavoro utilizzando AccountManager.addAccount().
  3. Il DPC inizia a essere eseguito nel profilo personale e avvia il processo di creazione di un profilo di lavoro utilizzando: ACTION_PROVISION_MANAGED_PROFILE: esegue il provisioning del profilo di lavoro.
    EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informazioni aggiuntive per il profilo di lavoro, ad esempio impostazioni internazionali, Wi-Fi e indirizzo email.
    EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: nome dell'account autenticato di cui eseguire la migrazione nel nuovo profilo di lavoro.
  4. Il DPC nel profilo di lavoro completa il processo di provisioning. Una volta creato il profilo di lavoro, anche il DPC viene eseguito all'interno del profilo. Il DPC nel profilo di lavoro completa il processo di provisioning eseguendo il push dei criteri per l'Account Google gestito, garantendo che il dispositivo non sia in uno stato di compromissione e verificando che i criteri vengano applicati (ad esempio richiedendo una password).
  5. Quando viene eseguito il provisioning del profilo di lavoro, il DPC riceve la trasmissione ACTION_PROFILE_PROVISIONING_COMPLETE.
  6. Il DPC nel profilo personale si disattiva se stesso o l'utente lo rimuove.

Crea prima il profilo di lavoro

  1. L'utente scarica il tuo DPC da Google Play e lo installa.
  2. Il DPC inizia a essere eseguito nel profilo personale e avvia il processo di creazione di un profilo di lavoro utilizzando: ACTION_PROVISION_MANAGED_PROFILE: esegue il provisioning del profilo di lavoro.
    EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informazioni aggiuntive per il profilo di lavoro, ad esempio impostazioni internazionali, Wi-Fi e indirizzo email.
  3. Il DPC aggiunge l'Account Google gestito utilizzando l'indirizzo AccountManager.addAccount().
  4. Il DPC riceve la trasmissione ACTION_PROFILE_PROVISIONING_COMPLETE e legge EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE.
  5. Il DPC nel profilo di lavoro completa il processo di provisioning. Una volta creato il profilo di lavoro, anche il DPC viene eseguito all'interno del profilo. Il DPC nel profilo di lavoro completa il processo di provisioning eseguendo il push dei criteri per l'Account Google gestito, garantendo che il dispositivo non sia in uno stato di compromissione e verificando che i criteri vengano applicati (ad esempio richiedendo una password).
  6. Il DPC attiva il profilo di lavoro utilizzando DevicePolicyManager.setProfileEnabled().
  7. Il DPC nel profilo personale si disattiva se stesso o l'utente lo rimuove.

Configura la modalità precedente

Puoi eseguire il provisioning della modalità operativa precedente durante la configurazione iniziale di un dispositivo o quando l'utente aggiunge un account in Impostazioni > Aggiungi account. Di seguito sono riportati i requisiti per rendere disponibile la versione gestita di Google Play agli utenti che dispongono di un Account Google:

  • L'Account Google fa parte di un dominio Google gestito.
  • Il dominio Google gestito è configurato per Android nell'azienda con un EMM vincolato all'API EMM di Google Play.

Se vuoi gestire le app solo su dispositivi precedenti, non hai bisogno di un DPC. In questo caso, l'utente aggiunge il proprio Account Google in Impostazioni > Aggiungi account. La gestione delle app include la selezione delle app consigliate, la messa a disposizione delle app private, l'acquisto e la distribuzione delle licenze.

Se vuoi che il DPC aggiunga l'Account Google:

  1. L'utente scarica il tuo DPC da Google Play e lo avvia.
  2. Il DPC aggiunge l'Account Google gestito utilizzando l'indirizzo AccountManager.addAccount(). Consulta TestDPC per un esempio di implementazione dell'aggiunta di un Account Google specifico utilizzando AccountManager.KEY_ACCOUNT_NAME.
  3. (Facoltativo) Il DPC si autodefinisce amministratore del dispositivo. In qualità di amministratore del dispositivo, il DPC ha funzionalità di gestione dei dispositivi che vanno oltre la gestione delle app.