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.
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
:
- 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. - Chiama il numero
getProfileSwitchingIconDrawable()
per ottenere un'icona da utilizzare per rappresentare un altro profilo. - Chiama il numero
getProfileSwitchingLabel()
per ricevere testo localizzato che chiede all'utente di cambiare profilo. - 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:
- Chiama
DevicePolicyManager.setLockTaskPackages()
per aggiungere le app alla lista consentita per la modalità di blocco attività. - 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à:
LOCK_TASK_FEATURE_NONE
LOCK_TASK_FEATURE_SYSTEM_INFO
LOCK_TASK_FEATURE_HOME
LOCK_TASK_FEATURE_NOTIFICATIONS
può essere utilizzato solo in combinazione conLOCK_TASK_FEATURE_HOME
.LOCK_TASK_FEATURE_KEYGUARD
LOCK_TASK_FEATURE_OVERVIEW
può essere utilizzato solo in combinazione conLOCK_TASK_FEATURE_HOME
.LOCK_TASK_FEATURE_GLOBAL_ACTIONS
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:
- Imposta il flag
MAKE_USER_EPHEMERAL
durante le chiamate aDevicePolicyManager.createAndManageUser()
. - 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:
onUserStarted()
: viene chiamato all'avvio di un utente.onUserSwitched()
: viene chiamato quando viene completato un trasferimento utente.onUserStopped()
: viene richiamato insieme aonUserRemoved()
quando un utente si ferma o si disconnette.
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:
- Utilizza
DevicePolicyManager.setStartUserSessionMessage()
per impostare il messaggio da mostrare a un utente all'inizio della sua sessione. Per recuperare il messaggio, chiamaDevicePolicyManager.getStartUserSessionMessage()
. - Utilizza
DevicePolicyManager.setEndUserSessionMessage()
per impostare il messaggio da mostrare all'utente al termine della sessione. Per recuperare il messaggio, chiamaDevicePolicyManager.getEndUserSessionMessage()
.
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:
Chiama
DevicePolicyManager.setKeepUninstalledPackages()
per specificare l'elenco di pacchetti da mantenere come APK. Per recuperare un elenco di questi pacchetti, chiamaDevicePolicyManager.getKeepUninstalledPackages()
.Chiama
DevicePolicyManager.installExistingPackage()
per installare un pacchetto che è stato conservato dopo la rimozione tramitesetKeepUninstalledPackages()
.
Metodi e costanti aggiuntivi
Android 9 include anche i seguenti metodi e costanti per supportare ulteriormente le sessioni utente sui dispositivi condivisi:
DevicePolicyManager.getSecondaryUsers()
ottiene un elenco di tutti gli utenti secondari su un dispositivo.DISALLOW_USER_SWITCH
è una limitazione relativa agli utenti che puoi attivare chiamandoDevicePolicyManager.addUserRestriction()
per bloccare il passaggio da un utente all'altro.LEAVE_ALL_SYSTEM_APPS_ENABLED
è un flag disponibile perDevicePolicyManager.createAndManageUser()
. Se questa opzione è impostata, le app di sistema non vengono disattivate durante il provisioning degli utenti.UserManager.UserOperationException
viene generato daDevicePolicyManager.createAndManageUser()
quando non è possibile creare un utente perché l'eccezione contiene il motivo dell'errore.
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:
addOverrideApn()
updateOverrideApn()
removeOverrideApn()
getOverrideApns()
setOverrideApnEnabled()
isOverrideApnEnabled()
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
:
DISALLOW_AIRPLANE_MODE
DISALLOW_AMBIENT_DISPLAY
DISALLOW_CONFIG_BRIGHTNESS
DISALLOW_CONFIG_DATE_TIME
DISALLOW_CONFIG_LOCATION
DISALLOW_CONFIG_SCREEN_TIMEOUT
DISALLOW_PRINTING
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:
- 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.
- Il DPC di origine chiama
transferOwnership()
per avviare il trasferimento. - Il sistema imposta il DPC target come amministratore attivo e lo imposta come proprietario del dispositivo gestito o del profilo di lavoro.
- Il DPC di destinazione riceve il callback
onTransferOwnershipComplete()
e può configurarlo utilizzando i valori dell'argomentobundle
. - 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:
- Per prima cosa, trasferisci la proprietà del profilo di lavoro.
- Attendi il callback
DeviceAdminReceiver
onTransferAffiliatedProfileOwnershipComplete()
per confermare che il profilo di lavoro è stato trasferito al DPC di destinazione. - 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 (vediKeyPairGenerator
) 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ù diID_TYPE_BASE_INFO
,ID_TYPE_SERIAL
,ID_TYPE_IMEI
oID_TYPE_MEID
nell'argomentoidAttestationFlags
. Il certificato restituito include gli ID hardware nel record di attestazione. Se non vuoi includere gli ID hardware, passa0
. I proprietari del profilo possono ricevere soltanto informazioni sul produttore (trasmettendoID_TYPE_BASE_INFO
). Per verificare che il dispositivo possa attestare gli ID, chiamaisDeviceIdAttestationSupported()
. - 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 metodiDevicePolicyManager
:setKeyPairCertificate()
e passafalse
per l'argomentoisUserSelectable
.installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
ed omettiINSTALLKEY_SET_USER_SELECTABLE
dall'argomentoflags
.
Combinando queste API, le aziende possono identificare in modo sicuro i dispositivi e confermarne l'integrità prima di fornire l'accesso:
- Il dispositivo Android genera una nuova chiave privata nell'hardware protetto. Poiché la chiave privata non lascia mai l'hardware protetto, rimane segreta.
- 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.
- Il server convalida la catena di certificati (radicata a un certificato Google) ed estrae i metadati del dispositivo dal record di attestazione.
- 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.
- Il server genera un certificato dalla richiesta di firma di certificato e lo invia al dispositivo.
- 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.
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
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:
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_WIFI_PASSWORD
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_SSID
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:
DevicePolicyManager.setKeyguardDisabled()
DevicePolicyManager.setStatusBarDisabled()
PackageInstaller.createSession()