Ruoli Android

Un ruolo è un nome univoco all'interno del sistema associato a determinate autorizzazioni e privilegi. Le app possono richiedere di avere determinati ruoli tramite l'API Android, in particolare chiamando i metodi della classe RoleManager.

Consulta l'elenco seguente per i ruoli disponibili e i relativi requisiti:

Ruolo Requisiti
ASSISTANT Almeno uno dei seguenti:
  • L'app ha un'attività che esegue azioni di assistenza, in base alle informazioni sul contesto dell'utente quando ha richiesto l'assistenza (ad esempio il nome del pacchetto per l'app in primo piano corrente e le relative informazioni contestuali).
  • L'app ha un servizio di interazione vocale sempre attivo controllato dall'autorizzazione android.permission.BIND_VOICE_INTERACTION, che può eseguire il riconoscimento vocale e ospitare sessioni di interazione vocale attiva. Inoltre, l'app ha un flag esplicito che indica che il servizio è in grado di gestire l'azione di assistenza.
BROWSER Tutti:
  • L'app ha un'attività che le app possono richiamare tramite richieste di intent implicite, che mostra una pagina web corrispondente a un indirizzo http://.
  • L'app deve gestire la navigazione tra i link. In altre parole, se l'utente visualizza una pagina web e fa clic su un indirizzo http:// nel testo, l'app deve essere in grado di visualizzare i contenuti corrispondenti al link selezionato senza ulteriore intervento dell'utente.
  • L'app deve essere in grado di fornire le informazioni sulla geolocalizzazione corrente del dispositivo alle pagine web quando viene richiesta e l'utente approva la richiesta.
DIALER Tutti:
  • L'app ha un'attività che le app possono richiamare tramite richieste di intent implicite, che fornisce l'interfaccia utente durante la chiamata mentre il dispositivo è in chiamata.
  • L'app può gestire gli intent di chiamata in arrivo, mostrare all'utente le informazioni relative alla chiamata (ad esempio il numero di telefono del chiamante) e consentire all'utente di rispondere o rifiutare la chiamata.
  • L'app fornisce all'utente un mezzo per avviare chiamate e visualizzare una cronologia delle chiamate sul suo dispositivo.
SMS Tutti:
  • L'app soddisfa tutti i requisiti per le app di messaggistica.
  • L'app ha un'attività che le app possono richiamare tramite richieste di intent implicite, che possono inviare un messaggio a un numero di telefono.
  • L'app ha un servizio soggetto all'autorizzazione android.permission.SEND_RESPOND_VIA_MESSAGE e invocabile tramite intent impliciti, che può inviare i messaggi ricevuti dall'app Telefono quando l'utente sceglie di rispondere tramite messaggio durante una chiamata in arrivo. L'app può inviare messaggi tramite il proprio sistema di messaggistica.
  • L'app ha due broadcast receiver, uno controllato dall'autorizzazione android.permission.BROADCAST_SMS e uno dall'autorizzazione android.permission.BROADCAST_WAP_PUSH, che possono ascoltare rispettivamente i messaggi SMS e MMS basati su testo inviati al dispositivo. L'app è quindi responsabile della scrittura dei messaggi per il fornitore di servizi SMS e dell'invio di notifiche agli utenti.
EMERGENCY Tutti:
  • L'app è un'app di sistema.
  • L'app ha un'attività che mostra le informazioni di emergenza dell'utente. Chiunque può accedere a questa schermata tramite il pulsante di emergenza nell'attività Telefono di emergenza.
HOME L'app ha un'attività che può avviare la schermata Home quando l'utente preme il pulsante Home. La schermata Home dovrebbe mostrare le icone delle app, i widget e supportare la navigazione basata su pulsanti o gesti (ad esempio, scorri verso l'alto per visualizzare tutte le app).
CALL_REDIRECTION L'app ha un servizio bloccato dall'autorizzazione android.permission.BIND_CALL_REDIRECTION_SERVICE a cui il framework di telecomunicazioni può eseguire il binding. Il servizio riceve il numero di telefono in uscita dal framework di telecomunicazioni ed esegue una delle seguenti azioni:
  • Consenti di effettuare la chiamata così com'è.
  • Modifica il numero in uscita in modo che venga instradato tramite un numero proxy.
  • Annullare la chiamata.
CALL_SCREENING L'app ha un servizio bloccato dall'autorizzazione android.permission.BIND_SCREENING_SERVICE, che svolge due funzioni:
  • Blocco e filtro delle chiamate: il servizio può scegliere quali chiamate inviare all'app Telefono sullo smartphone (e potenzialmente farle squillare, in base alla modalità Non disturbare o al volume) e quali inviare in silenzio alla segreteria.
  • Identificazione chiamata: il servizio può identificare e visualizzare le informazioni su una chiamata tramite un'interfaccia utente.
SYSTEM_GALLERY Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app fornisce un'interfaccia utente per consentire agli utenti di archiviare, organizzare e visualizzare i propri video e le proprie immagini.
SYSTEM_AUTOMOTIVE_CLUSTER Tutti:
  • L'app è un'app di sistema su Automotive.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app consente a un display del cruscotto auto (in genere adiacente al volante) di rispondere alle chiamate e di accedere agli elenchi di contatti e ai registri chiamate.
COMPANION_DEVICE_WATCH L'app può inviare richieste per essere associata a un dispositivo smartwatch e per gestirlo (utilizzando l'API fornita dalla classe CompanionDeviceManager). Quando lo smartwatch e l'app sono connessi tramite l'interfaccia utente fornita dall'app, gli utenti possono gestire lo smartwatch dall'app, ad esempio sincronizzare i contatti e il calendario, nonché gestire le notifiche e le chiamate.
SYSTEM_AUTOMOTIVE_PROJECTION Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app consente di proiettare lo schermo dello smartphone sul display dell'auto. Consente ai conducenti di accedere e controllare le app sugli smartphone Android, tra cui musica, navigazione, chiamate e ricerca, utilizzando i meccanismi di input del veicolo, tra cui tocco, controlli del volante e comandi vocali.
SYSTEM_SHELL Tutti:
  • L'app è un'app di sistema a cui è stato assegnato l'UID Process.SHELL_UID.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app fornisce un'interfaccia che funziona a livello di riga di comando in modo che gli utenti possano interagire con il sistema operativo Android. Ad esempio, la visualizzazione dei contenuti di una cartella o l'avvio di app. I comandi shell possono essere eseguiti tramite programmazione dalle app (se sono state concesse le autorizzazioni necessarie) o dallo strumento ADB.
SYSTEM_CONTACTS Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app fornisce un'interfaccia utente per consentire agli utenti di gestire i propri contatti (ad esempio, visualizzare, condividere, aggiungere, rimuovere o cercare un contatto). L'app aggiorna il fornitore di servizi di contatto quando l'utente aggiorna i suoi contatti dall'app. Gli utenti possono anche chiamare, inviare email o messaggi ai propri contatti dall'app.
SYSTEM_SPEECH_RECOGNIZER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app fornisce un servizio che può eseguire il riconoscimento vocale.
  • Quando l'app riceve stream in tempo reale del microfono da un'altra app per il riconoscimento vocale, attribuisce correttamente l'utilizzo del microfono all'app chiamante e aggiorna di conseguenza le statistiche di funzionamento dell'app.
SYSTEM_WIFI_COEX_MANAGER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app ha un servizio che imposta dinamicamente un elenco di canali Wi-Fi che il dispositivo deve evitare di utilizzare a causa di interferenze cellulari.
SYSTEM_WELLBEING Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app deve consentire agli utenti di ridurre le distrazioni e fornire statistiche sul loro utilizzo del dispositivo (ad es. il tempo di utilizzo dello schermo a settimana).
SYSTEM_TELEVISION_NOTIFICATION_HANDLER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app deve mostrare notifiche in primo piano agli utenti sui dispositivi TV. L'app deve anche mostrare le notifiche attive correnti quando viene inviato l'intent android.app.action.TOGGLE_NOTIFICATION_HANDLER_PANEL (da SystemUI).
SYSTEM_COMPANION_DEVICE_PROVIDER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app deve essere in grado di rilevare i dispositivi periferici nelle vicinanze. Deve avere un'interfaccia utente in cui l'utente può confermare che un determinato dispositivo periferico deve essere associato e gestito da un'app. Quando l'utente conferma, l'app di gestione concede all'app associata l'autorizzazione ad accedere al dispositivo periferico (ad esempio il nome, l'indirizzo, la classe e lo stato dell'accoppiamento) e può avviare la procedura di accoppiamento.
SYSTEM_DOCUMENT_MANAGER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app ha un'attività che consente agli utenti di accedere ai documenti esistenti e di creare nuovi documenti sul dispositivo.
  • L'app deve soddisfare tutti i requisiti descritti nella sezione 2.2.3 del CDD Android. Software nella sezione [3.2.3.1/H-0-1].
SYSTEM_ACTIVITY_RECOGNIZER Tutti:
  • L'app è un'app di sistema.
  • L'app ha un servizio soggetto a verifica da parte di android.permission.ACTIVITY_RECOGNITION, che può eseguire il riconoscimento delle attività (ad esempio corsa o ciclismo).
SYSTEM_UI Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app ha un'interfaccia che consente agli utenti di interagire con i loro smartphone. Ad esempio, la schermata principale dello smartphone, la navigazione, le app recenti, le impostazioni rapide, la barra delle notifiche, la schermata di blocco, il controllo del volume.
SYSTEM_TELEVISION_REMOTE_SERVICE Tutti:
  • L'app è un'app di sistema su Android TV.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app dispone di un servizio che può comunicare con il dispositivo HID del telecomando della TV (ad esempio tramite BLE), iniettare eventi (ad esempio i clic dei pulsanti) e inviare altri dati (ad esempio lo stream audio di un microfono integrato nel telecomando) alla piattaforma.
SYSTEM_UI_INTELLIGENCE Tutti:
  • È un servizio preinstallato che fornisce, tramite le API del framework (API pubbliche o di sistema), un processore intelligente on-device per le funzionalità dell'UI di sistema (ad esempio, la previsione e la visualizzazione delle app successive per gli utenti).
  • Il servizio deve soddisfare tutti i requisiti descritti nella sezione 9.8.6 Acquisizione di contenuti del CDD di Android.
  • Il servizio non può disporre dell'autorizzazione android.permission.INTERNET. Deve invece accedere a internet tramite API ben definite in un progetto open source.
  • Il servizio non può essere associato alle app, ad eccezione delle seguenti app di sistema: Bluetooth, Contatti, Media, Telefonia, SystemUI e componenti che forniscono API internet. Ogni associazione consentita deve essere configurata esplicitamente tramite la configurazione <allow-association> nella configurazione di sistema.
  • Il servizio non può condividere dati con le app, a meno che non venga eseguita un'azione diretta da parte dell'utente (ad esempio, l'utente preme esplicitamente un pulsante ogni volta che i dati vengono condivisi).
SYSTEM_AMBIENT_AUDIO_INTELLIGENCE Tutti:
  • Identiche alle condizioni per SYSTEM_UI_INTELLIGENCE, tranne per il fatto che il servizio preinstallato fornisce un processore intelligente on-device per l'audio ambientale (ad esempio, il riconoscimento dei brani in riproduzione nelle vicinanze del dispositivo).
SYSTEM_AUDIO_INTELLIGENCE Tutti:
  • Identiche alle condizioni per SYSTEM_UI_INTELLIGENCE, tranne per il fatto che il servizio preinstallato fornisce un processore intelligente on-device per l'audio (ad es. sottotitoli codificati per video, podcast, telefonate, videochiamate e messaggi audio).
SYSTEM_NOTIFICATION_INTELLIGENCE Tutti:
  • Identiche alle condizioni per SYSTEM_UI_INTELLIGENCE, tranne per il fatto che il servizio preinstallato fornisce un elaboratore intelligente on-device per le notifiche (ad esempio, suggerendo risposte e azioni per le notifiche dei messaggi).
SYSTEM_TEXT_INTELLIGENCE Tutti:
  • Identiche alle condizioni per SYSTEM_UI_INTELLIGENCE, tranne per il fatto che il servizio preinstallato fornisce un elaboratore intelligente on-device per il testo (ad es. traduzione in tempo reale o compilazione automatica).
SYSTEM_VISUAL_INTELLIGENCE Tutti:
  • Identico alle condizioni per SYSTEM_UI_INTELLIGENCE, tranne per il fatto che il servizio preinstallato fornisce un processore intelligente on-device per le funzionalità visive che prevede l'analisi dei dati della fotocamera. Ad esempio, mantenere attivo lo schermo del telefono mentre l'utente lo guarda o determinare l'orientamento ideale dello schermo in base all'orientamento del volto dell'utente rilevato dalla fotocamera anteriore del dispositivo.
COMPANION_DEVICE_APP_STREAMING Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • Casi d'uso consentiti:
    • Streaming, trasmissione o mirroring di app, che consentono di riprodurre in streaming, trasmettere o eseguire il mirroring da un dispositivo Android, come smartphone o tablet, a un computer desktop o laptop.
  • Quando stabilisci la connessione iniziale dal dispositivo A al dispositivo B:
    • L'accoppiamento DEVE essere autorizzato da un codice una tantum visualizzato sul dispositivo di origine (A) e inserito sul dispositivo collegato (B). In alternativa, se entrambi i dispositivi hanno almeno un account corrispondente nel loro AccountManager Android, l'utente PUÒ confermare l'accoppiamento inserendo la password dell'account sul dispositivo connesso (B).
    • Durante l'accoppiamento, entrambi i dispositivi devono trovarsi 1 l'uno vicino all'altro.
  • Entrambi i dispositivi devono trovarsi vicini 1 l'uno all'altro durante lo streaming.
  • L'app può creare e gestire canali di comunicazione con i dispositivi collegati in modo che possano scambiarsi dati. Per stabilire questi canali di comunicazione, l'app e i dispositivi collegati DEVONO autenticarsi l'un l'altro (ad esempio, dimostrando di conoscere le chiavi condivise). I canali di comunicazione DEVONO avere la protezione della crittografia end-to-end.
  • L'app può inviare notifiche dal dispositivo di origine (A) al dispositivo connesso (B) per consentire all'utente di intervenire sulle notifiche sul dispositivo connesso (B).
  • Essere in grado di trasmettere in streaming i metadati necessari per lo streaming di app sul dispositivo connesso (B), ad esempio l'elenco di app disponibili sul dispositivo di origine (A).
  • Essere in grado di riprodurre in streaming le app dal dispositivo di origine (A) al dispositivo collegato (B) dopo che l'utente ha indicato la sua preferenza al riguardo con il consenso esplicito (sul dispositivo di origine (A) o sul dispositivo collegato (B)).
  • Essere in grado di riprodurre (iniettare) gli eventi che si verificano su un'app in streaming sul dispositivo connesso (B) sul dispositivo di origine (A). Ad esempio, la riproduzione di un evento tocco sul dispositivo collegato (B) alle stesse coordinate del dispositivo di origine (A) o la riproduzione di un evento di input avvenuto sul dispositivo collegato (B) con la stessa semantica di input del dispositivo di origine (A).
  • L'app può sostituire lo stream del microfono del dispositivo di origine con lo stream del microfono di un dispositivo collegato mentre un'app in streaming utilizza il microfono.
  • L'app acquisisce l'audio dal dispositivo di origine (A) e lo trasmette in streaming al dispositivo connesso (B).
  • È CONSIGLIATO bloccare l'accesso alle app Impostazioni e agli app store dal dispositivo collegato (B).
  • A partire da Android 16, la cattura di screenshot e la lettura dello schermo di contenuti sensibili, come finestre e piattaforme protette, DEVONO essere impedite sul dispositivo connesso (B).
  • DEVE verificare l'integrità della build del sistema operativo del dispositivo connesso (ad esempio utilizzando l'attestazione del dispositivo come in VerifiedBootState).
  • Riproduci in streaming solo le app in cui è presente un solo account corrispondente nel registro degli account sul dispositivo, ad esempio la classe AccountManager su Android su entrambi i dispositivi. Se non è così, lo streaming DEVE essere autorizzato con un codice di una sola volta visualizzato sul dispositivo di origine (A) e inserito sul dispositivo collegato (B). Tieni presente che, nel caso di dispositivi che supportano più utenti (e non più account) con lo stesso isolamento dei dati affidabile come in Android multiutente, un utente viene conteggiato come un dispositivo.
  • DEVE interrompere lo streaming e disconnettersi dal dispositivo connesso (B) immediatamente se l'autenticazione dell'account sul dispositivo connesso (B) scade o viene revocata.
  • DEVE interrompere lo streaming e scollegarsi dal dispositivo connesso (B) al termine del tempo di attesa inattivo del dispositivo connesso (B) su cui sono visibili i contenuti visualizzati. POTREBBE mantenere attivo lo schermo del dispositivo connesso per casi come WakeLock, che mantiene attivo lo schermo del dispositivo Android. È obbligatorio indicare un valore per il timeout in caso di inattività. Se il dispositivo connesso (B) non ha un tempo di attesa inattivo, deve essere obbligatoriamente utilizzato un tempo di attesa inattivo di massimo 5 minuti.
  • Se il dispositivo di origine (A) utilizza il fattore di conoscenza della schermata di blocco (LSKF), quando lo schermo è bloccato, l'app NON DEVE trasmettere app a un dispositivo collegato (B) a meno che il dispositivo collegato (B) non abbia una schermata di blocco e non sia sbloccato.
  • Se il dispositivo di origine (A) è gestito da un amministratore, l'app DEVE rispettare i criteri impostati dall'amministratore per l'attivazione o la disattivazione dello streaming su dispositivi nelle vicinanze (ad esempio, utilizzando le DevicePolicyManager impostazioni in Android).
  • DEVE assicurarsi che i display remoti e tutte le sorgenti di eventi di input remoto appartengano allo stesso dispositivo logico (ad esempio un display remoto e una tastiera connessa) dal punto di vista dell'utente e che gli eventi vengano indirizzati di conseguenza.
  • L'utente DEVE essere in grado di terminare lo streaming dal dispositivo di origine (A), ad esempio utilizzando un pulsante in una notifica persistente. Questo comportamento è limitato dalla schermata di blocco, se sul dispositivo di origine (A) è impostato un blocco schermo. DEVE mostrare questa funzionalità persistente sul dispositivo di origine (A) che è sempre visibile e sopra la piega.
  • DEVE mostrare un'affordance sul dispositivo di origine (A) quando lo streaming avviene su un altro dispositivo, ad esempio un'icona nella barra di stato o una notifica persistente.
DEVICE_POLICY_MANAGEMENT Tutti:
  • Solo gli OEM possono concedere questo ruolo all'app. Le app non possono richiederlo poiché è pensato per essere concesso immediatamente al nome del pacchetto definito dall'OEM al momento della spedizione del dispositivo.
  • L'app deve essere in grado di eseguire il provisioning di un profilo gestito (proprietario del profilo) o di un dispositivo gestito (proprietario del dispositivo), incluso il download e l'installazione del client Device Policy appropriato per essere il proprietario del dispositivo/del profilo, se necessario.
  • Se vuoi, l'app può aggiornare dinamicamente le risorse, ad esempio stringhe e drawable, utilizzate per la gestione dei criteri dei dispositivi.
  • L'app può essere un'app di sistema preinstallata o essere scaricata e installata prima del provisioning.
  • Per le richieste di provisioning del proprietario del profilo, quando l'app del titolare del ruolo è installata su un determinato utente Android, deve essere installata su tutti i profili applicabili per quell'utente.
SYSTEM_APP_PROTECTION_SERVICE Tutti:
  • L'app è un'app di sistema.
  • L'unico scopo dell'app è rilevare app potenzialmente dannose (app che potrebbero mettere a rischio utenti, dati utente o dispositivi, come trojan, phishing e app spyware) o software mobile indesiderato.
  • L'app deve soddisfare tutti i requisiti descritti nella sezione 9.8.6 del CDD di Android. Dati a livello di sistema operativo e ambientali.
  • L'app non deve dichiarare l'autorizzazione normale android.permission.INTERNET. Deve invece accedere a internet tramite API ben definite in un progetto open source.
  • L'app non deve essere associata ad altre app, ad eccezione delle seguenti app di sistema: Permission Controller e componenti che forniscono API di telefonia e internet. Ogni associazione consentita deve essere configurata esplicitamente tramite la configurazione <allow-association> nella configurazione del sistema.
  • L'app non deve condividere dati con altre app, a meno che non sia presente un'azione diretta dell'utente (ad esempio, l'utente preme esplicitamente un pulsante ogni volta che i dati vengono condivisi).
SYSTEM_AUTOMOTIVE_CALENDAR_SYNC_MANAGER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • L'app deve trasferire i dati del calendario dallo smartphone iOS o Android dell'utente al dispositivo Android Auto. Il dispositivo Android Auto deve memorizzare questi dati di calendario nel provider di calendario.
  • L'app deve fornire un componente dell'interfaccia utente sullo smartphone che l'utente può utilizzare per attivare la sincronizzazione del calendario e selezionare i calendari da sincronizzare. L'app deve fornire un componente dell'interfaccia utente sullo smartphone che l'utente può utilizzare per disattivare la sincronizzazione del calendario.
  • L'app dovrebbe funzionare senza una connessione a internet. Ad esempio, utilizzando connessioni dirette con cavo o wireless.
AUTOMOTIVE_NAVIGATION Tutti:
  • L'app ha un'attività che le app possono richiamare tramite richieste di intent implicite, che mostrano la posizione e i dintorni attuali dell'utente.
  • L'app ha un'attività che le app possono richiamare tramite richieste di intent implicite, che consentono all'utente di passare a una posizione geografica specificata.
  • L'app ha un'attività che viene avviata sul quadro strumenti quando l'app ha il tasto di navigazione attivo. L'attività deve mostrare la posizione attuale dell'utente, i dintorni e consentirgli di raggiungere una posizione geografica specificata.
COMPANION_DEVICE_COMPUTER Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • Consente agli utenti di eseguire il mirroring delle notifiche e di accedere a foto e contenuti multimediali dal telefono su un computer connesso.
SYSTEM_SETTINGS_INTELLIGENCE Almeno uno dei seguenti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • Ha un servizio che fornisce funzionalità di intelligence per l'app Impostazioni, come suggerimenti e ricerca.
NOTES Tutti:
COMPANION_DEVICE_GLASSES L'app può effettuare richieste per essere associata a un dispositivo per occhiali e per gestirlo (utilizzando l'API fornita dalla classe CompanionDeviceManager. Quando il dispositivo per occhiali e l'app sono connessi utilizzando l'interfaccia utente fornita dal CDM, gli utenti possono gestire il dispositivo per occhiali concedendogli accesso ai contatti e l'autorizzazione per gestire le notifiche e le chiamate.
COMPANION_DEVICE_NEARBY_DEVICE_STREAMING Tutti:
  • L'app è un'app di sistema.
  • Solo gli OEM possono concedere questo ruolo all'app.
  • Casi d'uso consentiti:
    • Streaming di app da un dispositivo Android, come un cellulare o un tablet, a un veicolo.
    • Streaming di app da un dispositivo Android, come smartphone o tablet, a un dispositivo XR.
  • Quando stabilisci la connessione iniziale dal dispositivo A al dispositivo B:
    • L'accoppiamento DEVE essere autorizzato da un codice una tantum visualizzato sul dispositivo di origine (A) e inserito sul dispositivo collegato (B). In alternativa, se entrambi i dispositivi hanno almeno un account corrispondente nel loro AccountManager Android, l'utente PUÒ confermare l'accoppiamento inserendo la password dell'account sul dispositivo connesso (B).
    • Durante l'accoppiamento, entrambi i dispositivi devono trovarsi 1 l'uno vicino all'altro.
  • Entrambi i dispositivi devono trovarsi vicini 1 l'uno all'altro durante lo streaming.
  • L'app può creare e gestire canali di comunicazione con i dispositivi collegati in modo che possano scambiarsi dati. Per stabilire questi canali di comunicazione, l'app e i dispositivi collegati DEVONO autenticarsi l'un l'altro (ad esempio, dimostrando di conoscere le chiavi condivise). I canali di comunicazione DEVONO avere la protezione della crittografia end-to-end.
  • L'app può inviare notifiche dal dispositivo di origine (A) al dispositivo connesso (B) per consentire all'utente di intervenire sulle notifiche sul dispositivo connesso (B).
  • Essere in grado di trasmettere in streaming i metadati necessari per lo streaming di app sul dispositivo connesso (B), ad esempio l'elenco di app disponibili sul dispositivo di origine (A).
  • Essere in grado di riprodurre in streaming le app dal dispositivo di origine (A) al dispositivo collegato (B) dopo che l'utente ha indicato la sua preferenza al riguardo con il consenso esplicito (sul dispositivo di origine (A) o sul dispositivo collegato (B)).
  • Essere in grado di riprodurre (iniettare) gli eventi che si verificano su un'app in streaming sul dispositivo connesso (B) sul dispositivo di origine (A). Ad esempio, la riproduzione di un evento tocco sul dispositivo collegato (B) alle stesse coordinate del dispositivo di origine (A) o la riproduzione di un evento di input avvenuto sul dispositivo collegato (B) con la stessa semantica di input del dispositivo di origine (A).
  • L'app può sostituire lo stream del microfono del dispositivo di origine con lo stream del microfono di un dispositivo collegato mentre un'app in streaming utilizza il microfono.
  • L'app acquisisce l'audio dal dispositivo di origine (A) e lo trasmette in streaming al dispositivo connesso (B).
  • È CONSIGLIATO bloccare l'accesso alle app Impostazioni e agli app store dal dispositivo collegato (B).
  • A partire da Android 25Q2, la cattura di screenshot e la lettura dello schermo di contenuti sensibili, come finestre e piattaforme protette, DEVONO essere impedite sul dispositivo connesso (B).
  • DEVE verificare l'integrità della build del sistema operativo del dispositivo connesso (ad esempio utilizzando l'attestazione del dispositivo come in VerifiedBootState).
  • Riproduci in streaming solo le app in cui è presente un solo account corrispondente nel registro degli account sul dispositivo, ad esempio la classe AccountManager su Android su entrambi i dispositivi. Se non è così, lo streaming DEVE essere autorizzato con un codice di una sola volta visualizzato sul dispositivo di origine (A) e inserito sul dispositivo collegato (B). Tieni presente che, nel caso di dispositivi che supportano più utenti (e non più account) con lo stesso isolamento dei dati affidabile come in Android multiutente, un utente viene conteggiato come un dispositivo.
  • DEVE interrompere lo streaming e disconnettersi dal dispositivo connesso (B) immediatamente se l'autenticazione dell'account sul dispositivo connesso (B) scade o viene revocata.
  • DEVE interrompere lo streaming e scollegarsi dal dispositivo connesso (B) al termine del tempo di attesa inattivo del dispositivo connesso (B) su cui sono visibili i contenuti visualizzati. POTREBBE mantenere attivo lo schermo del dispositivo connesso per casi come WakeLock, che mantiene attivo lo schermo del dispositivo Android. È obbligatorio indicare un valore per il timeout in caso di inattività. Se il dispositivo connesso (B) non ha un tempo di attesa inattivo, deve essere obbligatoriamente utilizzato un tempo di attesa inattivo di massimo 5 minuti.
  • Se il dispositivo di origine (A) utilizza il fattore di conoscenza della schermata di blocco (LSKF), quando lo schermo è bloccato, l'app NON DEVE trasmettere app a un dispositivo collegato (B) a meno che il dispositivo collegato (B) non abbia una schermata di blocco e non sia sbloccato.
  • Se il dispositivo di origine (A) è gestito da un amministratore, l'app DEVE rispettare i criteri impostati dall'amministratore per l'attivazione o la disattivazione dello streaming su dispositivi nelle vicinanze (ad esempio, utilizzando le DevicePolicyManager impostazioni in Android).
  • DEVE assicurarsi che i display remoti e tutte le sorgenti di eventi di input remoto appartengano allo stesso dispositivo logico (ad esempio un display remoto e una tastiera connessa) dal punto di vista dell'utente e che gli eventi vengano indirizzati di conseguenza.
  • L'utente DEVE essere in grado di terminare lo streaming dal dispositivo di origine (A), ad esempio utilizzando un pulsante in una notifica persistente. Questo comportamento è limitato dalla schermata di blocco, se sul dispositivo di origine (A) è impostato un blocco schermo. DEVE mostrare questa funzionalità persistente sul dispositivo di origine (A) che è sempre visibile e sopra la piega.
  • DEVE mostrare un'affordance sul dispositivo di origine (A) quando lo streaming avviene su un altro dispositivo, ad esempio un'icona nella barra di stato o una notifica persistente.
WALLET Uno dei seguenti:
  • L'app ha un servizio APDU NFC che registra in modo statico almeno un AID nella categoria PAGAMENTO.
  • L'app implementa un'istanza di QuickAccessWalletService.

1 La prossimità è definita dal fatto che i due dispositivi si trovino nel raggio d'azione del Bluetooth o del Wi-Fi o che utilizzino la stessa rete locale.