Come le release precedenti, Android 13 include modifiche del comportamento che potrebbero interessare la tua app. Le seguenti modifiche del comportamento si applicano esclusivamente alle app destinate ad Android 13 o versioni successive. Se la tua app ha come target Android 13 o versioni successive, devi modificarla in modo da supportare correttamente questi comportamenti, ove applicabile.
Assicurati di esaminare anche l'elenco delle modifiche del comportamento che interessano tutte le app eseguite su Android 13.
Privacy
L'autorizzazione alle notifiche influisce sull'aspetto del servizio in primo piano
Se l'utente nega l'autorizzazione di notifica, non vedrà gli avvisi relativi ai servizi in primo piano nel cassetto delle notifiche. Tuttavia, gli utenti vedono comunque avvisi relativi ai servizi in primo piano in Task Manager, indipendentemente dal fatto che l'autorizzazione alle notifiche sia stata concessa o meno.
Nuova autorizzazione di runtime per i dispositivi Wi-Fi nelle vicinanze
Nelle versioni precedenti di Android, l'utente deve concedere alla tua app l'autorizzazione ACCESS_FINE_LOCATION
per completare diversi casi d'uso del Wi-Fi comuni.
Poiché è difficile per gli utenti associare le autorizzazioni di accesso alla posizione alla funzionalità Wi-Fi, Android 13 (livello API 33) introduce un'autorizzazione di runtime nel gruppo di autorizzazioni NEARBY_DEVICES
per le app che gestiscono le connessioni di un dispositivo ai punti di accesso nelle vicinanze tramite Wi-Fi. Questa autorizzazione,
NEARBY_WIFI_DEVICES
,
soddisfa i seguenti casi d'uso relativi al Wi-Fi, tra cui:
- Trova i dispositivi nelle vicinanze o collegati, ad esempio stampanti o dispositivi di trasmissione di contenuti multimediali.
Questo flusso di lavoro consente alla tua app di svolgere i seguenti tipi di attività:
- Ricevi informazioni AP fuori banda, ad esempio tramite BLE.
- Rileva e connettiti ai dispositivi tramite Wi-Fi Aware e connettiti tramite un hotspot solo locale.
- Rileva e connettiti ai dispositivi tramite Wi-Fi Direct.
- Avvia una connessione a un SSID noto, ad esempio un'auto o un dispositivo per la smart home.
- Avvia un hotspot solo locale.
- Raggio d'azione fino ai dispositivi Wi-Fi Aware nelle vicinanze.
Se la tua app non ricava informazioni sulla posizione fisica dalle API Wi-Fi, richiedi NEARBY_WIFI_DEVICES
anziché ACCESS_FINE_LOCATION
quando scegli come target Android 13 o versioni successive e utilizzi le API Wi-Fi. Quando dichiari l'autorizzazione NEARBY_WIFI_DEVICES
, dichiara fermamente che la tua app non ricava mai informazioni sulla posizione fisica dalle API Wi-Fi. Per farlo, imposta l'attributo android:usesPermissionFlags
su neverForLocation
. Questa procedura è simile a quella eseguita in Android 12 (livello API 31) e versioni successive quando dichiari che le informazioni del dispositivo Bluetooth non vengono mai utilizzate per la posizione.
Scopri di più su come richiedere l'autorizzazione per accedere ai dispositivi Wi-Fi nelle vicinanze.
Autorizzazioni per i contenuti multimediali granulari
READ_MEDIA_AUDIO
.Se la tua app ha come target Android 13 o versioni successive e deve accedere a file multimediali creati da altre app, devi richiedere una o più delle seguenti autorizzazioni granulari per i contenuti multimediali anziché l'autorizzazione READ_EXTERNAL_STORAGE
:
Tipo di media | Autorizzazione da richiedere |
---|---|
Immagini e foto | READ_MEDIA_IMAGES |
Video | READ_MEDIA_VIDEO |
File audio | READ_MEDIA_AUDIO |
Prima di accedere ai file multimediali di un'altra app, verifica che l'utente abbia concesso le autorizzazioni granulari per i contenuti multimediali appropriate alla tua app.
La Figura 1 mostra un'app che richiede l'autorizzazione READ_MEDIA_AUDIO
.
Se richiedi contemporaneamente l'autorizzazione READ_MEDIA_IMAGES
e l'autorizzazione READ_MEDIA_VIDEO
, viene visualizzata una sola finestra di dialogo di autorizzazione del sistema.
Se alla tua app era stata concessa in precedenza l'autorizzazione READ_EXTERNAL_STORAGE
, tutte le autorizzazioni READ_MEDIA_*
richieste vengono concesse automaticamente durante l'upgrade. Puoi utilizzare il seguente comando ADB per esaminare le autorizzazioni sottoposte ad upgrade:
adb shell cmd appops get --uid PACKAGE_NAME
L'utilizzo di sensori del corpo in background richiede una nuova autorizzazione
Android 13 introduce il concetto di accesso "durante l'uso" per i sensori del corpo, come il battito cardiaco, la temperatura e la percentuale di ossigeno nel sangue. Questo modello di accesso è molto simile a quello introdotto dal sistema per la posizione in Android 10 (livello API 29).
Se la tua app ha come target Android 13 e richiede l'accesso alle informazioni del sensore del corpo
durante l'esecuzione in background, devi dichiarare la nuova autorizzazione
BODY_SENSORS_BACKGROUND
oltre all'autorizzazione
BODY_SENSORS
esistente.
Prestazioni e batteria
Utilizzo delle risorse della batteria
Se l'utente imposta lo stato "Limitato" nella tua app per l'utilizzo della batteria in background mentre l'app ha come target Android 13, il sistema non trasmette la trasmissione BOOT_COMPLETED
o LOCKED_BOOT_COMPLETED
finché l'app non viene avviata per altri motivi.
Esperienza utente
Controlli multimediali derivati da PlaybackState
Per le app che hanno come target Android 13 (livello API 33) e versioni successive, il sistema ricava i controlli multimediali dalle azioni PlaybackState
. In questo modo, il sistema può mostrare un insieme più completo di controlli tecnicamente coerenti tra telefoni e dispositivi tablet, nonché in linea con il modo in cui i controlli multimediali vengono visualizzati su altre piattaforme Android, come Android Auto e Android TV.
La Figura 2 mostra un esempio dell'aspetto rispettivamente su un telefono e un tablet.

Prima di Android 13, il sistema mostrava fino a cinque azioni provenienti dalla notifica MediaStyle
nell'ordine in cui erano state aggiunte.
Nella modalità compatta, ad esempio nelle impostazioni rapide compresse, sono state mostrate fino a tre azioni specificate con setShowActionsInCompactView()
.
A partire da Android 13, il sistema mostra fino a cinque pulsanti di azione in base al PlaybackState
, come descritto nella seguente tabella. In modalità compatta, verranno visualizzati solo i primi tre slot di azione. Per le app che non hanno come target Android 13 o per quelle che non includono PlaybackState
, il sistema mostrerà i controlli basati sull'elenco Action
aggiunto alla notifica MediaStyle
, come descritto nel paragrafo precedente.
Slot | Azione | Criteri |
---|---|---|
1 | Gioca |
Lo stato corrente della PlaybackState è uno dei seguenti:
|
Rotella di caricamento |
Lo stato corrente della PlaybackState è uno dei seguenti:
|
|
Mettere in pausa | Lo stato attuale della PlaybackState non corrisponde a nessuno dei precedenti. |
|
2 | Precedente | PlaybackState azioni includono ACTION_SKIP_TO_PREVIOUS . |
Personalizzato | PlaybackState azioni non includono ACTION_SKIP_TO_PREVIOUS e PlaybackState azioni personalizzate includono un'azione personalizzata che non è stata ancora inserita. |
|
Vuoto | PlaybackState extra includono un valore booleano true per la chiave SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV . |
|
3 | Avanti | PlaybackState azioni includono ACTION_SKIP_TO_NEXT . |
Personalizzato | PlaybackState azioni non includono ACTION_SKIP_TO_NEXT e PlaybackState azioni personalizzate includono un'azione personalizzata che non è stata ancora inserita. |
|
Vuoto | PlaybackState extra includono un valore booleano true per la chiave SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT . |
|
4 | Personalizzato | PlaybackState azioni personalizzate includono un'azione personalizzata che non è stata ancora inserita. |
5 | Personalizzato | PlaybackState azioni personalizzate includono un'azione personalizzata che non è stata ancora inserita. |
Le azioni personalizzate sono posizionate nell'ordine in cui sono state aggiunte a
PlaybackState
.
Tema a colori dell'app applicato automaticamente ai contenuti WebView
Per le app che hanno come target Android 13 (livello API 33) o versioni successive, il metodo setForceDark()
è deprecato e, di conseguenza, è inattivo se viene chiamato il metodo.
Ora invece WebView imposta sempre
la query supporti prefers-color-scheme
in base all'attributo del tema dell'app,
isLightTheme
. In altre parole, se isLightTheme
è true
o non è specificato, prefers-color-scheme
è light
; altrimenti è dark
. Questo comportamento indica che lo stile chiaro o scuro dei contenuti web viene applicato automaticamente in modo che corrisponda al tema dell'app, se i contenuti lo supportano.
Per la maggior parte delle app, il nuovo comportamento dovrebbe applicare automaticamente gli stili di app appropriati, ma dovresti testare l'app per verificare la presenza di eventuali casi in cui potresti aver controllato manualmente le impostazioni della modalità Buio.
Se devi comunque personalizzare il comportamento del tema a colori della tua app, utilizza il metodo setAlgorithmicDarkeningAllowed()
. Per garantire la compatibilità con le versioni precedenti di Android, ti consigliamo di utilizzare il metodo setAlgorithmicDarkeningAllowed()
equivalente in AndroidX.
Consulta la documentazione relativa a questo metodo per scoprire di più sul comportamento che puoi aspettarti nella tua app a seconda delle impostazioni targetSdkVersion
e del tema dell'app.
Google Play Services
Autorizzazione richiesta per l'ID pubblicità
Le app che utilizzano l'ID pubblicità di Google Play Services e hanno come target Android 13 (livello API 33) e versioni successive devono dichiarare la normale autorizzazione AD_ID
nel file manifest dell'app, come segue:
<manifest ...>
<!-- Required only if your app targets Android 13 or higher. -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application ...>
...
</application>
</manifest>
Se la tua app non dichiara questa autorizzazione quando ha come target Android 13 o versioni successive, l'ID pubblicità viene rimosso automaticamente e sostituito con una stringa di zeri.
Se la tua app utilizza SDK che dichiarano l'autorizzazione AD_ID
nel file manifest della libreria, per impostazione predefinita l'autorizzazione viene unita al file manifest dell'app. In questo caso, non è necessario dichiarare l'autorizzazione nel file più potente della tua app.
Per scoprire di più, consulta l'articolo ID pubblicità nella Guida di Play Console.
Limitazioni non SDK aggiornate
Android 13 include elenchi aggiornati di interfacce non SDK limitate in base alla collaborazione con sviluppatori Android e ai test interni più recenti. Quando possibile, ci assicuriamo che siano disponibili alternative pubbliche prima di limitare le interfacce non SDK.
Se la tua app non ha come target Android 13, alcune di queste modifiche potrebbero non riguardarti immediatamente. Tuttavia, anche se al momento puoi utilizzare alcune interfacce non SDK (a seconda del livello API target dell'app), l'utilizzo di metodi o campi non SDK comporta sempre un rischio elevato di danneggiare la tua app.
Se non hai la certezza che la tua app utilizzi interfacce non SDK, puoi testarla per scoprirlo. Se la tua app si basa su interfacce non SDK, dovresti iniziare a pianificare una migrazione alle alternative agli SDK. Tuttavia, siamo consapevoli che per alcune app esistono casi d'uso validi per l'utilizzo di interfacce non SDK. Se non riesci a trovare un'alternativa all'utilizzo di un'interfaccia non SDK per una funzionalità nella tua app, devi richiedere una nuova API pubblica.
Per scoprire di più sulle modifiche introdotte in questa release di Android, consulta Aggiornamenti alle limitazioni relative alle interfacce non SDK in Android 13. Per ulteriori informazioni sulle interfacce non SDK in generale, consulta Restrizioni sulle interfacce non SDK.