PermissionController

Il modulo PermissionController Mainline contiene le policy sulla privacy e l'interfaccia utente relativa alla concessione e alla gestione delle autorizzazioni (ad esempio, le policy 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 di autorizzazioni di runtime (inclusa la concessione alle app di sistema)
  • Gestione dei permessi di runtime (compreso il raggruppamento dei permessi)
  • Monitoraggio dell'utilizzo delle autorizzazioni di runtime
  • Ruoli

A partire da Android 12, il framework e le classi del server di sistema per Role vengono spostati 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 Mainline aggiornabile, 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 possono collegarsi il sistema e le applicazioni, tra cui la gestione dei ruoli, la revoca delle autorizzazioni e le informazioni sulle autorizzazioni di base (per 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 lungo periodo di tempo. Per le app destinate all'SDK 30 o versioni successive la revoca automatica è abilitata per impostazione predefinita, mentre per le app destinate all'SDK 29 o versioni successive la revoca automatica è disabilitata per impostazione predefinita. Se abilitata, la revoca automatica influisce su tutte le autorizzazioni di runtime ma esenta tutte le autorizzazioni preconcesse, comprese le autorizzazioni fisse in base a criteri e sistema e le autorizzazioni concesse per impostazione predefinita o per ruolo. Per maggiori dettagli, fare riferimento a 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 Permission 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 da frameworks/base/apex/permission
  • File PermissionController da packages/apps/PermissionController

Gli OEM possono utilizzare i comandi di esempio per spostare le 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 elementi disegnabili) utilizzando gli overlay delle risorse di runtime (RROS) .