Le app con privilegi sono app di sistema che si trovano in una directory priv-app su una
  partizione dell'immagine di sistema. Le partizioni utilizzate per le release Android sono:
- Android 9 e versioni successive: 
/system, /product, /vendor - Android 8.1 e versioni precedenti: 
/system 
In passato, i produttori di dispositivi avevano poco controllo sulle autorizzazioni
  con firma | privilegiate che potevano essere concesse alle
  app privilegiate. A partire da Android 8.0, i produttori possono concedere esplicitamente
  autorizzazioni privilegiate nei file XML di configurazione del sistema nella
  directory /etc/permissions. A partire da Android 9, gli implementatori possono
  concedere o negare esplicitamente tutte le autorizzazioni privilegiate. Se le autorizzazioni privilegiate non vengono concesse,
  il dispositivo non si avvierà.
Il file privapp-permissions.xml può solo concedere o negare
  le autorizzazioni per le app con privilegi nella stessa partizione. Ad esempio, se
  un'app nella partizione /product richiede autorizzazioni privilegiate,
  la richiesta può essere concessa o negata solo da un file privapp-permissions.xml
  su /product.
Aggiungere una lista consentita
  Gli elenchi consentiti di autorizzazioni per le app possono essere elencati in un singolo file XML o in più
  file XML che si trovano nella directory /etc/permissions:
/etc/permissions/privapp-permissions-OEM_NAME.xml/etc/permissions/privapp-permissions-DEVICE_NAME.xml
Non esiste una regola rigorosa che stabilisca come devono essere organizzati i contenuti. Gli implementatori di dispositivi possono
  determinare la struttura dei contenuti, a condizione che tutte le app di /system/priv-app
  siano incluse nella lista consentita. Ad esempio, Google ha sviluppato una singola lista consentita per tutte le app con privilegi.
  Ti consigliamo la seguente organizzazione:
- Le autorizzazioni per le app già incluse nell'albero
    Android Open Source Project (AOSP)
    sono elencate in 
/etc/permissions/privapp-permissions-platform.xml. - Per altre app, utilizza file del modulo
    
/etc/permissions/privapp-permissions-DEVICE_NAME.xml. 
Personalizzare una lista consentita
AOSP include un'implementazione della lista consentita che può essere personalizzata in base alle esigenze.
  Se un'autorizzazione deve essere negata, modifica l'XML in modo da utilizzare un tag deny-permission
  anziché un tag permission. Ad esempio:
<!-- This XML file declares which signature|privileged permissions to grant to privileged apps that come with the platform --> <permissions> <privapp-permissions package="com.android.backupconfirm"> <permission name="android.permission.BACKUP"/> <permission name="android.permission.CRYPT_KEEPER"/> </privapp-permissions> <privapp-permissions package="com.android.cellbroadcastreceiver"> <!-- Don't allow the application to interact across users --> <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/> <permission name="android.permission.MANAGE_USERS"/> <permission name="android.permission.MODIFY_PHONE_STATE"/> <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/> <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/> </privapp-permissions> ...
Trovare le autorizzazioni mancanti
Per trovare le autorizzazioni mancanti quando avvii un nuovo dispositivo, attiva la modalità di log di transizione:
ro.control_privapp_permissions=log
Le violazioni vengono segnalate nel file di log. Vengono concesse autorizzazioni non privilegiate. In questo modo, il dispositivo rimane funzionante e viene comunque fornito l'elenco delle violazioni. Il formato del messaggio di errore è il seguente:
PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist
Tutte le violazioni devono essere risolte aggiungendo le autorizzazioni mancanti alle liste consentite appropriate. Tieni presente che in:
- Android 9 e versioni successive, le violazioni delle autorizzazioni privilegiate impediscono l'avvio del dispositivo. Devi invece consentire o negare esplicitamente tutte le autorizzazioni privilegiate.
 - Android 8.0 e versioni precedenti, le autorizzazioni mancanti non vengono concesse alle app interessate nonostante
    si trovino nel percorso 
priv-app. 
Applicare una lista consentita
  Dopo aver creato le liste consentite, attiva l'applicazione in fase di runtime impostando la proprietà build
  ro.control_privapp_permissions=enforce.
  La lista consentita è richiesta solo per le autorizzazioni dichiarate dalle app con
  package="android". Lo stato della proprietà ro.control_privapp_permissions
  deve rispettare la
  Sezione 9.1 Autorizzazioni
  del Compatibility Definition Document (CDD).