Il modulo PermissionController Mainline contiene le politiche sulla privacy e l'interfaccia utente relative alla concessione e alla gestione delle autorizzazioni (ad esempio le politiche e l'interfaccia utente per la concessione e la gestione delle autorizzazioni).
Informazioni su PermissionController
Il modulo PermissionController gestisce l'interfaccia utente, la logica e i ruoli relativi alle autorizzazioni per consentire l'accesso alle app per scopi specifici. Controlla quanto segue:
- Concessione delle autorizzazioni di runtime (inclusa la concessione alle app di sistema)
- Gestione delle autorizzazioni di runtime (incluso il raggruppamento delle autorizzazioni)
- Monitoraggio dell'utilizzo delle autorizzazioni di runtime
- Ruoli
A partire da Android 12, le classi framework e server di sistema per Role
vengono spostate nel modulo per rendere Role
completamente modulare.
In Android 10, l'app Package Installer è suddivisa in sezioni per consentire l'aggiornamento della logica delle autorizzazioni. Come modulo aggiornabile Mainline, PermissionController:
- Interagisce con il framework solo tramite @SystemApi stabile (nessun utilizzo dell'API @hide).
- Gestisce gli intenti relativi alle autorizzazioni con priorità > 0.
- Espone un meccanismo per consentire agli OEM di personalizzare i temi.
- Fornisce servizi a cui il sistema e le applicazioni possono associarsi, inclusa la gestione dei ruoli, la revoca delle autorizzazioni e le informazioni sulle autorizzazioni di base (per le Impostazioni).
- Supporta la revoca automatica per le app inutilizzate (novità in Android 11).
In Android9, il controllo delle autorizzazioni fa parte di com.android.packageinstaller
.
Revoca automatica per le app inutilizzate
In Android 11, il modulo PermissionsController può revocare automaticamente le autorizzazioni di runtime per le app che non sono state utilizzate per un periodo di tempo prolungato. Le app destinate all'SDK 30 o versioni successive hanno la revoca automatica abilitata per impostazione predefinita, mentre le app destinate all'SDK 29 o precedenti hanno la revoca automatica disabilitata per impostazione predefinita. Se abilitata, la revoca automatica influisce su tutte le autorizzazioni di runtime, ma esenta tutte le autorizzazioni pre-concesse, incluse le autorizzazioni fissate da criteri e sistema e le autorizzazioni concesse per impostazione predefinita o per ruolo. Per i dettagli, consulta Autorizzazioni di ripristino automatico dalle app inutilizzate .
Formato del pacchetto
Il formato del modulo PermissionController differisce tra le versioni.
In Android 11 o versioni successive, il modulo PermissionController è in formato APEX ed è aggiornabile. Il nome del pacchetto è
com.google.android.permission
.In Android 10, il modulo PermissionController è in formato APK e non è aggiornabile. Il nome del pacchetto è
com.google.android.permissioncontroller
.
Confine del modulo
In Android 12, il codice del modulo di autorizzazione viene spostato da packages/apps/PermissionController
(il progetto platform/packages/apps/PackageInstaller
) e frameworks/base/apex/permission
(questa è una sottodirectory del progetto frameworks/base
).
La nuova struttura del progetto per i packages/modules/Permission
è la seguente:
- File da
frameworks/base/apex/permission
- File di PermissionController da
packages/apps/PermissionController
Gli OEM possono utilizzare i comandi di esempio per spostare le proprie patch dalle directory del progetto originale alla nuova directory del progetto.
Sposta una patch da frameworks/base/apex/permission
root/frameworks/base/$ git format-patch -1 --relative=apex/permission commit --stdout > patch-file.txt
root/packages/modules/Permission$ git am -p2 patch-file.txt
Sposta una patch da packages/apps/PermissionController
root/packages/apps/PermissionController$ git format-patch -1 commit --stdout > patch-file.txt
root/packages/modules/Permission$ git am -p2 --directory=PermissionController patch-file.txt
Personalizzazione
Gli OEM possono personalizzare il tema dell'interfaccia utente delle autorizzazioni (colori, margini, caratteri e disegnabili) utilizzando le sovrapposizioni di risorse di runtime (RROS) .