Il modulo Mainline PermissionController contiene le norme sulla privacy e l'UI relativa alla concessione e alla gestione delle autorizzazioni (ad esempio, le norme e l'UI 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. In qualità di modulo Mainline aggiornabile, PermissionController:
- Interagisce con il framework solo tramite @SystemApi stabile (nessun utilizzo di API @hide).
- Gestisce gli intent relativi alle autorizzazioni con priorità > 0.
- Espone un meccanismo che consente agli OEM di personalizzare i temi.
- Fornisce servizi a cui il sistema e le applicazioni possono essere associati, tra cui gestione dei ruoli, revoca delle autorizzazioni e informazioni di base sulle autorizzazioni (per Impostazioni).
- Supporta la revoca automatica per le app inutilizzate (novità di Android 11).
In Android 9, 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. Per le app che hanno come target l'SDK 30 o versioni successive, la revoca automatica è attivata per impostazione predefinita, mentre per le app che hanno come target l'SDK 29 o versioni precedenti, la revoca automatica è disattivata per impostazione predefinita. Se attivata, la revoca automatica influisce su tutte le autorizzazioni di runtime, ma esenta tutte le autorizzazioni pre-concesse, incluse le autorizzazioni fisse di sistema e delle norme e le autorizzazioni concesse per impostazione predefinita o per ruolo. Per maggiori dettagli, consulta Reimpostazione automatica delle autorizzazioni per le app inutilizzate.
Formato del pacchetto
Il formato del modulo PermissionController varia a seconda delle release.
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 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 packages/modules/Permission
è la seguente:
- File di
frameworks/base/apex/permission
- File PermissionController da
packages/apps/PermissionController
Gli OEM possono utilizzare i comandi di esempio per spostare le patch dalle directory di progetto originali alla nuova directory di 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 della UI delle autorizzazioni (colori, margini, caratteri e risorse disegnabili) utilizzando sovrapposizioni di risorse di runtime (RRO).