Aggiornamenti delle autorizzazioni in Android 11

Android 11 consente agli utenti di specificare autorizzazioni per posizione, microfono e fotocamera. Inoltre, il sistema reimposta le autorizzazioni delle app inutilizzate destinate ad Android 11 o e le app potrebbero dover aggiornare le autorizzazioni dichiarate utilizzare la finestra di avviso di sistema o leggere informazioni relative ai numeri di telefono.

Autorizzazioni una tantum

A partire da Android 11, ogni volta che la tua app richiede un'autorizzazione relative a posizione, microfono o fotocamera, la finestra di dialogo delle autorizzazioni rivolta agli utenti contiene un'opzione denominata Solo questa volta. Se l'utente seleziona questa opzione in alla finestra di dialogo, alla tua app viene concessa un'autorizzazione una tantum temporanea.

Scopri di più su come il sistema gestisce una tantum autorizzazioni.

Reimposta automaticamente le autorizzazioni delle app inutilizzate

Se la tua app ha come target Android 11 o versioni successive e non viene utilizzata mesi, il sistema protegge i dati utente reimpostando automaticamente i dati autorizzazioni di runtime concesse dall'utente alla tua app. Questa azione ha lo stesso come se l'utente visualizzasse un'autorizzazione nelle impostazioni di sistema e modificasse il livello di accesso dell'app su Nega. Se la tua app segue le best practice per di richieste di autorizzazioni in fase di runtime, non dovrebbe essere necessario apportare modifiche all'app. Il motivo è che, poiché l'utente interagisce con le funzionalità della tua app, dovresti verificare che le funzionalità abbiano le autorizzazioni di cui hanno bisogno.

Scopri di più su come il sistema reimposta automaticamente le autorizzazioni delle app inutilizzate Google Cloud.

Visibilità della finestra di dialogo delle autorizzazioni

A partire da Android 11, se l'utente tocca Rifiuta per una autorizzazione specifica più volte nel corso del ciclo di installazione dell'app dispositivo, l'utente non vede la finestra di dialogo delle autorizzazioni di sistema se la tua app richiede di nuovo quell'autorizzazione. L'azione dell'utente implica "Non chiedermelo più". Attivato precedenti, gli utenti vedevano la finestra di dialogo delle autorizzazioni di sistema ogni volta l'app ha richiesto un'autorizzazione, a meno che l'utente non abbia precedentemente selezionato un'opzione "Non chiedere di nuovo" casella di controllo o opzione. Questa modifica del comportamento in Android 11 sconsiglia richieste ripetute di autorizzazioni che gli utenti hanno scelto di negare.

Per capire se a un'app sono state negate definitivamente le autorizzazioni (per il debug) e test), utilizza questo comando:

adb shell dumpsys package PACKAGE_NAME

Dove PACKAGE_NAME è il nome del pacchetto da ispezionare.

L'output del comando contiene sezioni simili alla seguente:

...
runtime permissions:
  android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
  android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
  android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
...

Le autorizzazioni che sono state negate una volta dall'utente vengono segnalate da USER_SET. Le autorizzazioni che sono state rifiutate in modo permanente selezionando Rifiuta due volte vengono segnalato da USER_FIXED.

Durante i test, ti consigliamo di reimpostare questi flag per assicurarti che i tester quando la finestra di dialogo di richiesta non viene mostrata. Per farlo, utilizza il comando:

adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed

PERMISSION_NAME è il nome dell'autorizzazione che vuoi resettare. Per visualizzare un elenco completo delle autorizzazioni app per Android, visita l'API Authorization di riferimento.

Scopri di più su come gestire l'autorizzazione denial nell'app.

Modifiche alla finestra di avviso del sistema

Android 11 apporta diverse modifiche al modo in cui le app vengono concesse SYSTEM_ALERT_WINDOW autorizzazione. Le modifiche hanno lo scopo di proteggere gli utenti concedendo l'autorizzazione concedere in modo più intenzionale.

Ad alcune app viene concessa automaticamente l'autorizzazione SYSTEM_ALERT_WINDOW su richiesta

Ad alcune classi di app viene concesso automaticamente il SYSTEM_ALERT_WINDOW autorizzazione su richiesta:

  • Qualsiasi app con ROLE_CALL_SCREENING e alle richieste SYSTEM_ALERT_WINDOW viene concessa automaticamente l'autorizzazione. Se l'app perde ROLE_CALL_SCREENING, perde l'autorizzazione.

  • Qualsiasi app che acquisisce la schermata tramite un MediaProjection e alle richieste SYSTEM_ALERT_WINDOW viene concessa automaticamente l'autorizzazione a meno che l'utente non abbia negato esplicitamente l'autorizzazione all'app. Quando l'app interrompe l'acquisizione dello schermo, perde l'autorizzazione. Questo caso d'uso riguarda principalmente per giochi in live streaming.

Queste app non devono inviare ACTION_MANAGE_OVERLAY_PERMISSION per ottenere l'autorizzazione SYSTEM_ALERT_WINDOW; le app possono semplicemente richiedere SYSTEM_ALERT_WINDOW direttamente.

Gli intent MANAGE_OVERLAY_PERMISSION portano sempre l'utente alla schermata delle autorizzazioni di sistema

A partire da Android 11, ACTION_MANAGE_OVERLAY_PERMISSION portano sempre l'utente alla schermata Impostazioni di primo livello, dove l'utente può concedere o revocare SYSTEM_ALERT_WINDOW autorizzazioni per le app. I dati di package: nell'intent vengono ignorati.

Nelle versioni precedenti di Android, l'intent ACTION_MANAGE_OVERLAY_PERMISSION puoi specificare un pacchetto, che porta l'utente a una schermata specifica dell'app per la gestione dell'autorizzazione. Questa funzionalità non è più supportata a partire dal giorno Android 11. L'utente deve prima selezionare l'app che preferisce per concedere o revocare l'autorizzazione. Lo scopo di questa modifica è proteggere gli utenti rendendo più intenzionale l'autorizzazione.

Numeri di telefono.

Android 11 modifica l'autorizzazione relativa allo smartphone che la tua app utilizza per la lettura dei numeri di telefono.

Se la tua app ha come target Android 11 o versioni successive e deve accedere al API di numeri di telefono mostrate nel seguente elenco, devi richiedere le READ_PHONE_NUMBERS anziché l'autorizzazione READ_PHONE_STATE.

Se la tua app dichiara READ_PHONE_STATE di chiamare metodi diversi da quelli in nell'elenco precedente, puoi continuare a richiedere READ_PHONE_STATE su tutti Versioni di Android. Se usi l'autorizzazione READ_PHONE_STATE soltanto per dell'elenco precedente, tuttavia, aggiorna il file manifest come segue:

  1. Modifica la tua dichiarazione di READ_PHONE_STATE in modo che l'app utilizzi il solo su Android 10 (livello API 29) e versioni precedenti.
  2. Aggiungi l'autorizzazione READ_PHONE_NUMBERS.

Il seguente snippet di dichiarazione del file manifest illustra questa procedura:

<manifest>
    <!-- Grants the READ_PHONE_STATE permission only on devices that run
         Android 10 (API level 29) and lower. -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"
                     android:maxSdkVersion="29" />
    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
</manifest>

Risorse aggiuntive

Per ulteriori informazioni sulle modifiche alle autorizzazioni in Android 11, visualizza le seguenti materiali:

Video

Sviluppare con le ultime modifiche alla privacy in Android 11