Cosa c'è in Android 9 per le app aziendali

Questa pagina fornisce una panoramica delle API aziendali, delle funzionalità e delle modifiche al comportamento disponibili in Android 9.

Interfaccia utente del profilo di lavoro

Android 9 (livello API 28) include modifiche all'interfaccia utente nell'Avvio app predefinito per aiutare gli utenti a separare le app personali da quelle di lavoro. I produttori di dispositivi che supportano questa funzionalità possono presentare le app degli utenti in schede personali e di lavoro separate. Abbiamo anche reso più semplice l'attivazione e la disattivazione del profilo di lavoro per gli utenti dei dispositivi grazie a un'opzione nella scheda Lavoro di Avvio app.

Figura 1. La scheda personale e la scheda Lavoro dell'Avvio app predefinite con cambio del profilo di lavoro

Durante il provisioning di profili di lavoro e dispositivi gestiti, Android 9 include illustrazioni animate per aiutare gli utenti dei dispositivi a comprendere queste funzionalità.

Cambiare app da un profilo all'altro

Android 9 include API per avviare un'altra istanza di un'app in un profilo diverso per aiutare gli utenti a passare da un account all'altro. Ad esempio, un'app email può fornire una UI che consente all'utente di passare dal profilo personale al profilo di lavoro e viceversa per accedere a due account email. Tutte le app possono chiamare queste API per avviare l'attività principale della stessa app, se è già installata nell'altro profilo. Per aggiungere alla tua app il trasferimento di account tra più profili, segui i passaggi riportati di seguito per i metodi di chiamata della classe CrossProfileApps:

  1. Chiama il numero getTargetUserProfiles() per visualizzare un elenco dei profili in cui puoi avviare un'altra istanza dell'app. Questo metodo verifica che l'app sia installata nei profili.
  2. Chiama il numero getProfileSwitchingIconDrawable() per ottenere un'icona da utilizzare per rappresentare un altro profilo.
  3. Chiama il numero getProfileSwitchingLabel() per ricevere testo localizzato che chiede all'utente di cambiare profilo.
  4. Chiama startMainActivity() per avviare un'istanza della tua app in un altro profilo.

Verifica che l'attività principale che vuoi lanciare sia dichiarata nel file manifest dell'app, con un'azione intent ACTION_MAIN, e includa una categoria di intent CATEGORY_LAUNCHER.

Attivare o disattivare in modo programmatico i profili di lavoro

L'Avvio app predefinito (o le app che hanno l'autorizzazione MANAGE_USERS o MODIFY_QUIET_MODE) possono attivare o disattivare il profilo di lavoro chiamando UserManager.requestQuietModeEnabled(). Puoi controllare il valore restituito per sapere se l'utente deve confermare le proprie credenziali prima che lo stato cambi. Poiché la modifica potrebbe non avvenire immediatamente, ascolta la trasmissione di ACTION_MANAGED_PROFILE_AVAILABLE o ACTION_MANAGED_PROFILE_UNAVAILABLE per sapere quando aggiornare l'interfaccia utente.

L'app può controllare lo stato del profilo di lavoro chiamando il numero UserManager.isQuietModeEnabled().

Bloccare qualsiasi app su un dispositivo

A partire da Android 9, i proprietari dei dispositivi e dei profili (di utenti secondari) possono bloccare qualsiasi app sullo schermo di un dispositivo attivando la modalità di blocco attività. In precedenza, gli sviluppatori di app dovevano aggiungere il supporto per la modalità di blocco attività nelle loro app. Inoltre, Android 9 estende le API di blocco attività ai proprietari dei profili di utenti secondari non affiliati. Per bloccare un'app sullo schermo, procedi nel seguente modo:

  1. Chiama DevicePolicyManager.setLockTaskPackages() per aggiungere le app alla lista consentita per la modalità di blocco attività.
  2. Chiama ActivityOptions.setLockTaskEnabled() per avviare un'app inclusa nella lista consentita in modalità di blocco attività.

Per interrompere un'app in modalità di blocco attività, rimuovila dalla lista consentita della modalità di blocco attività utilizzando DevicePolicyManager.setLockTaskPackages().

Attiva le funzionalità dell'interfaccia utente di sistema

Quando la modalità di blocco attività è attivata, i proprietari dei dispositivi e dei profili possono abilitare determinate funzionalità dell'interfaccia utente di sistema sul dispositivo chiamando DevicePolicyManager.setLockTaskFeatures() e trasmettendo un campo bit dei seguenti flag funzionalità:

Puoi chiamare il numero DevicePolicyManager.getLockTaskFeatures() per visualizzare l'elenco delle funzionalità disponibili su un dispositivo quando è attiva la modalità di blocco attività. Quando un dispositivo esce dalla modalità di blocco attività, torna allo stato imposto da altri criteri relativi ai dispositivi.

Elimina finestre di dialogo di errore

In alcuni ambienti, ad esempio dimostrazioni di vendita al dettaglio o visualizzazioni di informazioni pubbliche, potresti non voler mostrare le finestre di dialogo di errore agli utenti. Un controller dei criteri dei dispositivi (DPC) può eliminare le finestre di dialogo di errore di sistema per le app che si arrestano in modo anomalo o non rispondono aggiungendo la limitazione utente DISALLOW_SYSTEM_ERROR_DIALOGS. Questa limitazione interessa tutte le finestre di dialogo se applicate da un proprietario del dispositivo, ma solo quelle mostrate nell'utente principale o secondario vengono eliminate quando la limitazione viene applicata dai proprietari del profilo. Questa limitazione non riguarda i profili di lavoro.

In Android 9, le app eseguite in modalità a schermo intero immersiva non mostrano il fumetto del promemoria in modalità di blocco attività. Il fumetto del promemoria è un riquadro mostrato agli utenti (al primo avvio) che spiega come uscire dalla modalità immersiva.

Supporta più utenti su dispositivi dedicati

Android 9 introduce il concetto di utente temporaneo per dispositivi dedicati (precedentemente chiamati dispositivi COSU). Gli utenti temporanei sono utenti a breve termine nei casi in cui più utenti condividono un singolo dispositivo dedicato. Sono incluse le sessioni utente pubbliche su dispositivi come i kiosk per il check-in in biblioteca o per l'accoglienza, nonché le sessioni permanenti tra un insieme fisso di utenti sui dispositivi, ad esempio i turnisti.

Gli utenti temporanei devono essere creati in background. Vengono creati come utenti secondari su un dispositivo e vengono rimossi (insieme alle app e ai dati associati) quando vengono arrestati, trasferiti o il dispositivo si riavvia. Per creare un utente temporaneo, i proprietari di dispositivi possono:

  1. Imposta il flag MAKE_USER_EPHEMERAL durante le chiamate a DevicePolicyManager.createAndManageUser().
  2. Chiama DevicePolicyManager.startUserInBackground() per avviare l'utente temporaneo in background.

Nota: le app destinate ad Android 9 dovrebbero rilevare UserManager.UserOperationException quando chiami createAndManageUser(). Chiama il metodo getUserOperationResult() dell'eccezione per scoprire perché l'utente non è stato creato.

Ricevere notifiche di eventi

La DeviceAdminReceiver riceve notifiche per i seguenti eventi:

Mostra messaggi di eventi agli utenti

I proprietari di dispositivi possono configurare i messaggi che vengono mostrati agli utenti quando iniziano e terminano le proprie sessioni:

Uscire e bloccare gli utenti

I proprietari di dispositivi possono utilizzare DevicePolicyManager.setLogoutEnabled() per specificare se la disconnessione è abilitata per gli utenti secondari. Per controllare se la disconnessione è abilitata, chiama DevicePolicyManager.isLogoutEnabled().

I proprietari del profilo di utenti secondari possono chiamare DevicePolicyManager.logoutUser() per interrompere l'utente secondario e tornare all'utente principale.

I proprietari di dispositivi possono utilizzare DevicePolicyManager.stopUser() per interrompere un utente secondario specificato.

Memorizzazione nella cache dei pacchetti

Per semplificare il provisioning degli utenti sui dispositivi condivisi con un insieme fisso di utenti, ad esempio i dispositivi per i turnisti, è possibile memorizzare nella cache i pacchetti necessari per le sessioni multiutente:

  1. Chiama DevicePolicyManager.setKeepUninstalledPackages() per specificare l'elenco di pacchetti da mantenere come APK. Per recuperare un elenco di questi pacchetti, chiama DevicePolicyManager.getKeepUninstalledPackages().

  2. Chiama DevicePolicyManager.installExistingPackage() per installare un pacchetto che è stato conservato dopo la rimozione tramite setKeepUninstalledPackages().

Metodi e costanti aggiuntivi

Android 9 include anche i seguenti metodi e costanti per supportare ulteriormente le sessioni utente sui dispositivi condivisi:

Cancella i dati del pacchetto e rimuovi gli account

I proprietari dei dispositivi e dei profili possono chiamare clearApplicationUserData() per cancellare i dati utente di un determinato pacchetto. Per rimuovere un account dalla AccountManager, i proprietari di dispositivi e profili possono chiamare removeAccount().

Limitazioni per gli utenti e maggiore controllo sulle impostazioni

Android 9 introduce una serie di limitazioni per gli utenti per i DPC, oltre alla possibilità di configurare APN, orario, fuso orario e impostazioni di sistema su un dispositivo.

Configura gli APN

I proprietari di dispositivi possono utilizzare i seguenti metodi nella classe DevicePolicyManager per configurare il servizio APN su un dispositivo:

Configura orario e fuso orario

I proprietari di dispositivi possono utilizzare i seguenti metodi nella classe DevicePolicyManager per impostare l'ora e il fuso orario su un dispositivo:

Forza l'applicazione di limitazioni per gli utenti sulle impostazioni importanti

Android 9 aggiunge limitazioni per gli utenti per disattivare funzionalità e impostazioni di sistema. Per aggiungere una limitazione, chiama DevicePolicyManager.addUserRestriction() con una delle seguenti costanti UserManager:

Se a un dispositivo vengono applicati i criteri DISALLOW_CONFIG_BRIGHTNESS e DISALLOW_CONFIG_SCREEN_TIMEOUT, i proprietari dei dispositivi possono comunque impostare le impostazioni relative a luminosità dello schermo, modalità luminosità dello schermo e timeout schermo sul dispositivo utilizzando l'API DevicePolicyManager.setSystemSetting().

Dati a consumo

I proprietari di dispositivi e profili possono impedire alle app di utilizzare le reti di dati a consumo. Una rete è considerata a consumo quando l'utente è sensibile all'utilizzo intensivo dei dati a causa di costi, limiti di dati o problemi di batteria e prestazioni. Per impedire alle app di utilizzare le reti a consumo, chiama DevicePolicyManager.setMeteredDataDisabledPackages() per passare un elenco di nomi di pacchetti. Per recuperare le app attualmente con limitazioni, chiama il numero DevicePolicyManager.getMeteredDataDisabledPackages().

Per scoprire di più sui dati a consumo in Android, consulta Ottimizzazione dell'utilizzo dei dati di rete.

Migrazione dei DPC

I controller dei criteri dei dispositivi (DPC) possono trasferire la proprietà di un dispositivo o di un profilo di lavoro a un altro DPC. Potresti trasferire la proprietà per trasferire alcune funzionalità all'API Android Management, per eseguire la migrazione dei dispositivi dal DPC legacy o per aiutare gli amministratori IT a eseguire la migrazione all'EMM. Poiché stai solo modificando la proprietà del DPC, non puoi utilizzare questa funzionalità per modificare il tipo di gestione, ad esempio la migrazione da un dispositivo gestito a un profilo di lavoro o viceversa.

Puoi utilizzare la risorsa XML dei criteri di amministrazione dei dispositivi per indicare che questa versione dell'DPC supporta la migrazione. Un DPC di destinazione indica che può ricevere la proprietà includendo un elemento denominato <support-transfer-ownership>. L'esempio seguente mostra come eseguire questa operazione nel file XML di amministrazione del dispositivo del DPC:

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <support-transfer-ownership />
    <uses-policies>
        <limit-password />
        <watch-login />
        <reset-password />
    </uses-policies>
</device-admin>

Gli DPC che vogliono migrare la proprietà a una nuova app DPC possono verificare se la versione di un DPC di destinazione supporta la migrazione chiamando il metodo DeviceAdminInfo supportsTransferOwnership(). Prima di trasferire la proprietà, è responsabilità del DPC di origine verificare il DPC di destinazione confrontando le firme dell'app. La classe PackageManager include metodi per lavorare con le firme per la firma del codice.

Android gestisce i criteri relativi agli utenti e al sistema dell'DPC di origine tramite un trasferimento di proprietà, senza che sia necessario eseguirne la migrazione. Un DPC di origine può passare dati personalizzati al DPC di destinazione utilizzando coppie chiave-valore in un PersistableBundle. Dopo un trasferimento, il DPC di destinazione può recuperare questi dati chiamando DevicePolicyManager.getTransferOwnershipBundle().

I passaggi per trasferire la proprietà di un dispositivo gestito o di un profilo di lavoro sono gli stessi:

  1. Il DPC di origine verifica che la versione del DPC di destinazione supporti la migrazione e conferma che la firma dell'app del DPC di destinazione corrisponda a un valore previsto.
  2. Il DPC di origine chiama transferOwnership() per avviare il trasferimento.
  3. Il sistema imposta il DPC target come amministratore attivo e lo imposta come proprietario del dispositivo gestito o del profilo di lavoro.
  4. Il DPC di destinazione riceve il callback onTransferOwnershipComplete() e può configurarlo utilizzando i valori dell'argomento bundle.
  5. In caso di problemi con il trasferimento, il sistema ripristina la proprietà al DPC di origine. Se il DPC di origine deve confermare che il trasferimento della proprietà è riuscito, chiama il numero isAdminActive() per verificare che il DPC di origine non sia più l'amministratore attivo.

Tutte le app in esecuzione nel profilo di lavoro ricevono la trasmissione ACTION_PROFILE_OWNER_CHANGED quando il proprietario del profilo cambia. Le app in esecuzione su un dispositivo gestito ricevono la trasmissione ACTION_DEVICE_OWNER_CHANGED quando il proprietario del dispositivo cambia.

Profili di lavoro su dispositivi completamente gestiti

Il trasferimento di due istanze di un DPC in esecuzione come proprietario del dispositivo e proprietario del profilo avviene in due fasi. Quando il profilo personale e il profilo di lavoro sono affiliati, completa il trasferimento nel seguente ordine:

  1. Per prima cosa, trasferisci la proprietà del profilo di lavoro.
  2. Attendi il callback DeviceAdminReceiver onTransferAffiliatedProfileOwnershipComplete() per confermare che il profilo di lavoro è stato trasferito al DPC di destinazione.
  3. Infine, trasferisci la proprietà del dispositivo gestito al DPC target.

Posticipare gli aggiornamenti over-the-air (OTA)

I proprietari di dispositivi possono posticipare gli aggiornamenti di sistema OTA ai dispositivi per un massimo di 90 giorni in modo da bloccare la versione del sistema operativo in esecuzione su questi dispositivi in periodi critici (come le festività). Il sistema applica un buffer obbligatorio di 60 giorni dopo un periodo di blocco definito per evitare il blocco del dispositivo a tempo indeterminato.

Durante un periodo di blocco:

  • I dispositivi non ricevono notifiche sugli aggiornamenti OTA in attesa.
  • I dispositivi non installano alcun aggiornamento OTA del sistema operativo.
  • Gli utenti dei dispositivi non possono controllare manualmente la disponibilità di aggiornamenti OTA nelle Impostazioni.

Per impostare un periodo di blocco, chiama il numero SystemUpdatePolicy.setFreezePeriods(). Poiché il periodo di blocco si ripete ogni anno, le date di inizio e di fine del periodo sono rappresentate da numeri interi che conteggiano il numero di giorni dall'inizio dell'anno. Il giorno di inizio deve iniziare almeno 60 giorni dopo la fine di qualsiasi periodo di blocco precedente. I proprietari del dispositivo possono chiamare SystemUpdatePolicy.getFreezePeriods() per ricevere un elenco dei periodi di blocco impostati in precedenza nell'oggetto dei criteri di aggiornamento del sistema. DevicePolicyManager.getSystemUpdatePolicy() è stato aggiornato per restituire gli eventuali periodi di blocco impostati dal proprietario del dispositivo.

Limitare la condivisione in un profilo di lavoro

I proprietari del profilo possono impedire agli utenti di condividere dati personali in un profilo di lavoro sul dispositivo aggiungendo la limitazione utente DISALLOW_SHARE_INTO_MANAGED_PROFILE. Questa limitazione impedisce le seguenti operazioni di gestione e condivisione degli intent:

  • App dei profili personali che condividono dati e file con le app dei profili di lavoro.
  • App dei profili di lavoro che scelgono elementi dal profilo personale, ad esempio immagini o file.

Dopo aver impostato questa limitazione, il tuo DPC può comunque consentire gli intent di attività con più profili chiamando addCrossProfileIntentFilter().

Chiavi hardware protette e certificati per le macchine

Android 9 aggiunge API per aiutarti a utilizzare chiavi e certificati che puoi combinare per identificare i dispositivi in modo sicuro. Un DPC in esecuzione in modalità proprietario del profilo o proprietario del dispositivo oppure un programma di installazione del certificato delegato può completare le seguenti attività:

  • Generare chiavi e certificati nell'hardware protetto (ad esempio in un ambiente di esecuzione attendibile (TEE) o in Secure Element (SE)) del dispositivo Android. Le chiavi generate non lasciano mai l'hardware sicuro e possono essere utilizzate da KeyChain di Android. Chiama DevicePolicyManager.generateKeyPair() fornendo l'algoritmo (vedi KeyPairGenerator) e gli eventuali ID hardware che vuoi attestare, ad esempio il numero di serie o l'IMEI. Per scoprire di più sulle modifiche per la sicurezza dell'hardware, consulta la pagina relativa ai miglioramenti della sicurezza con Android 9.
  • Associa un certificato a una chiave esistente generata dal dispositivo. Chiama DevicePolicyManager.setKeyPairCertificate() fornendo l'alias della chiave esistente e della catena di certificati, a partire dal certificato leaf e includendo la catena di attendibilità in ordine.
  • Prima di utilizzare la chiave, verifica che l'hardware protetto lo protegga. Per verificare quali meccanismi proteggono la chiave, segui i passaggi descritti in Attestazione della chiave.
  • I proprietari dei dispositivi e gli utenti che hanno eseguito l'installazione dei certificati delegati possono ricevere una dichiarazione firmata degli ID hardware dei dispositivi con le versioni del sistema Android. Chiama DevicePolicyManager.generateKeyPair() passando uno o più di ID_TYPE_BASE_INFO, ID_TYPE_SERIAL, ID_TYPE_IMEI o ID_TYPE_MEID nell'argomento idAttestationFlags. Il certificato restituito include gli ID hardware nel record di attestazione. Se non vuoi includere gli ID hardware, passa 0. I proprietari del profilo possono ricevere soltanto informazioni sul produttore (trasmettendo ID_TYPE_BASE_INFO). Per verificare che il dispositivo possa attestare gli ID, chiama isDeviceIdAttestationSupported().
  • Impedisci agli utenti dei dispositivi di utilizzare in modo improprio le chiavi aziendali (nelle attività non aziendali) rendendo non selezionabili i certificati delle chiavi. Il sistema non include certificati non selezionabili nel riquadro del selettore. Nel metodo di callback di DeviceAdminReceiver.onChoosePrivateKeyAlias(), restituisci l'alias alla chiave aziendale in modo che il sistema selezioni automaticamente il certificato per conto dell'utente. Per rendere non selezionabile una chiave, chiama i seguenti metodi DevicePolicyManager:

Combinando queste API, le aziende possono identificare in modo sicuro i dispositivi e confermarne l'integrità prima di fornire l'accesso:

  1. Il dispositivo Android genera una nuova chiave privata nell'hardware protetto. Poiché la chiave privata non lascia mai l'hardware protetto, rimane segreta.
  2. Il dispositivo utilizza la chiave per creare e inviare una richiesta di firma del certificato (CSR) al server. La richiesta di firma del certificato include il record di attestazione contenente gli ID dispositivo.
  3. Il server convalida la catena di certificati (radicata a un certificato Google) ed estrae i metadati del dispositivo dal record di attestazione.
  4. Il server verifica che l'hardware protetto protegge la chiave privata e che gli ID dispositivo corrispondano ai record aziendali. Il server può anche verificare che il sistema Android e le versioni della patch soddisfino eventuali requisiti.
  5. Il server genera un certificato dalla richiesta di firma di certificato e lo invia al dispositivo.
  6. Il dispositivo accoppia il certificato alla chiave privata (rimanente nell'hardware protetto) che consente alle app di connettersi ai servizi aziendali.

Altre API, funzionalità e modifiche per la sicurezza

ID per i log di sicurezza e di rete

Android 9 include gli ID nei log delle attività di sicurezza e di rete. L'ID numerico aumenta monotonicamente per ogni evento, consentendo agli amministratori IT di individuare più facilmente le lacune nei log. Poiché i log di sicurezza e di rete sono raccolte separate, il sistema mantiene valori ID separati.

Chiama SecurityEvent.getId(), DnsEvent.getId() o ConnectEvent.getId() per ottenere il valore ID. Il sistema reimposta l'ID ogni volta che un DPC abilita il logging o al riavvio del dispositivo. I log di sicurezza recuperati tramite la chiamata a DevicePolicyManager.retrievePreRebootSecurityLogs() non includono questi ID.

Logging di sicurezza

Il logging di sicurezza assegna a ogni SecurityEvent un livello di log. Per ottenere il livello di log, chiama getLogLevel(). Questo metodo restituisce un valore a livello di log che può essere LEVEL_INFO, LEVEL_WARNING o LEVEL_ERROR.

Android 9 registra gli eventi elencati nella tabella seguente nei log di sicurezza. Per controllare il tag di un evento, chiama getTag(). Per recuperare i dati sull'evento, chiama getData().

Tag Descrizione evento
TAG_CERT_AUTHORITY_INSTALLED Tentativo di installare un nuovo certificato radice nell'archivio credenziali del sistema.
TAG_CERT_AUTHORITY_REMOVED Tentativo di rimuovere un certificato radice dall'archivio credenziali del sistema.
TAG_CERT_VALIDATION_FAILURE Un certificato Wi-Fi non ha superato il controllo di convalida durante la connessione.
TAG_CRYPTO_SELF_TEST_COMPLETED Il sistema ha completato l'autotest crittografico.
TAG_KEYGUARD_DISABLED_FEATURES_SET Un'app di amministrazione ha disattivato le funzionalità della schermata di blocco di un dispositivo o di un profilo di lavoro.
TAG_KEY_DESTRUCTION Tentativo di eliminazione di una chiave di crittografia.
TAG_KEY_GENERATED Tentativo di generazione di una nuova chiave di crittografia.
TAG_KEY_IMPORT Tentativo di importare una nuova chiave di crittografia.
TAG_KEY_INTEGRITY_VIOLATION Android ha rilevato una chiave di crittografia o di autenticazione danneggiata.
TAG_LOGGING_STARTED Registrazione del logging di sicurezza avviata.
TAG_LOGGING_STOPPED Registrazione del logging di sicurezza interrotta.
TAG_LOG_BUFFER_SIZE_CRITICAL Il buffer del log di sicurezza ha raggiunto il 90% della sua capacità.
TAG_MAX_PASSWORD_ATTEMPTS_SET Un'app di amministrazione ha impostato il numero consentito di tentativi di inserimento della password errata.
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET Un'app di amministrazione ha impostato un timeout massimo per il blocco schermo.
TAG_MEDIA_MOUNT Il supporto di archiviazione rimovibile montato sul dispositivo.
TAG_MEDIA_UNMOUNT Il supporto di archiviazione rimovibile dal dispositivo è stato smontato.
TAG_OS_SHUTDOWN Il sistema Android si è arrestato.
TAG_OS_STARTUP Il sistema Android è stato avviato.
TAG_PASSWORD_COMPLEXITY_SET Un'app di amministrazione ha impostato i requisiti di complessità delle password.
TAG_PASSWORD_EXPIRATION_SET Un'app di amministrazione ha impostato una durata di scadenza della password.
TAG_PASSWORD_HISTORY_LENGTH_SET Un'app di amministrazione ha impostato una durata per la cronologia delle password, impedendo agli utenti di riutilizzare le vecchie password.
TAG_REMOTE_LOCK Un'app di amministrazione ha bloccato il dispositivo o il profilo di lavoro.
TAG_USER_RESTRICTION_ADDED Un'app di amministrazione ha impostato una limitazione per gli utenti.
TAG_USER_RESTRICTION_REMOVED Un'app di amministrazione ha rimosso una limitazione utente.
TAG_WIPE_FAILURE Tentativo di cancellare i dati di un dispositivo o di un profilo di lavoro non riuscito.

Verifica schermata di blocco del profilo di lavoro

A partire da Android 9, i proprietari dei profili possono richiedere agli utenti di impostare una verifica della schermata di blocco separata per il proprio profilo di lavoro utilizzando la limitazione utente di DISALLOW_UNIFIED_PASSWORD. Per verificare se un utente ha impostato la stessa verifica della schermata di blocco per il proprio dispositivo e profilo di lavoro, chiama DevicePolicyManager.isUsingUnifiedPassword().

Se un dispositivo ha una schermata di blocco del profilo di lavoro separata, DevicePolicyManager.setMaximumTimeToLock() imposta un timeout della schermata di blocco solo per il profilo di lavoro anziché per l'intero dispositivo.

Accesso agli strumenti per sviluppatori

Per mantenere i dati di lavoro nel profilo di lavoro, lo strumento Android Debug Bridge (adb) non può accedere alle directory e ai file nel profilo di lavoro.

Supporto di più opzioni biometriche

Android 9 aggiunge un controllo granulare sull'autenticazione hardware biometrica nella schermata di blocco di un profilo di lavoro. Chiama il metodo DevicePolicyManager.setKeyguardDisabledFeatures() esistente con KEYGUARD_DISABLE_FACE e KEYGUARD_DISABLE_IRIS. Per disattivare tutti i metodi di autenticazione biometrica forniti dal dispositivo, aggiungi KEYGUARD_DISABLE_BIOMETRICS.

Ritiro dei criteri di amministrazione dei dispositivi

Android 9 contrassegna i criteri elencati di seguito come deprecati per i DPC utilizzando amministratore dispositivo. I criteri continuano a funzionare in Android 9 come in precedenza. A partire dalla release 10 di Android, gli stessi criteri generano un'eccezione SecurityException quando vengono richiamati da un amministratore del dispositivo.

Alcune applicazioni utilizzano l'amministrazione del dispositivo per l'amministrazione dei dispositivi consumer. Ad esempio, bloccare ed eliminare i dati di un dispositivo smarrito. I seguenti criteri continueranno a essere disponibili per attivare questa funzionalità:

Per ulteriori informazioni su queste modifiche, consulta Ritiro dell'amministrazione del dispositivo.

Registrazione del codice QR semplificata

Libreria QR integrata

Android 9 viene fornito con una libreria QR per semplificare il provisioning del dispositivo con codice QR. Gli amministratori IT non devono più inserire manualmente i dettagli Wi-Fi per configurare un dispositivo. Con Android 9 è invece possibile includere questi dettagli Wi-Fi in un codice QR. Quando un amministratore IT scansiona il codice QR con un dispositivo di proprietà dell'azienda, il dispositivo si connette automaticamente alla rete Wi-Fi ed entra nel processo di provisioning senza alcun input manuale aggiuntivo.

Il metodo di provisioning del codice QR supporta i seguenti extra per specificare i dettagli del Wi-Fi:

Impostare data e fuso orario utilizzando gli extra di provisioning

Il metodo di provisioning del codice QR supporta il provisioning extra per impostare l'ora e il fuso orario su un dispositivo:

Opzioni di cancellazione dei dati

Gli amministratori dei dispositivi possono mostrare un messaggio personalizzato agli utenti quando rimuovono un profilo di lavoro o un utente secondario. che comunica agli utenti dei dispositivi che l'amministratore IT ha rimosso il profilo di lavoro o l'utente secondario. Chiama wipeData(int, CharSequence) e fornisci un breve messaggio esplicativo. Quando viene chiamato dall'utente principale o dal proprietario del dispositivo, il sistema non mostra un messaggio e avvia il ripristino dei dati di fabbrica del dispositivo.

Per rimuovere i dati dell'abbonamento da una SIM eUICC incorporata, chiama wipeData() e includi WIPE_EUICC nell'argomento flags.

Metodi per i proprietari di profili affiliati

I seguenti metodi sono disponibili per i proprietari di profilo affiliato: