A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Autorizzazione per le notifiche di attivazione
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Le notifiche in Android 13 utilizzano un modello di attivazione, che rappresenta un cambiamento rispetto alle versioni precedenti di Android, che utilizzano un modello di disattivazione. In Android 13, tutte le app devono chiedere l'autorizzazione agli utenti prima di inviare richieste di conferma per le notifiche. Questo modello contribuisce a ridurre le interruzioni delle notifiche, riduce al minimo il sovraccarico di informazioni e aiuta gli utenti a controllare quali notifiche vengono visualizzate in base a ciò che è importante per loro. Per supportare il
modello di attivazione, gli OEM devono implementare modifiche ai sistemi di notifiche e autorizzazioni di runtime.
Questa pagina descrive cosa devono implementare gli OEM per supportare questa modifica e come verificare l'implementazione.
Implementare le modifiche per le notifiche di attivazione
A partire da Android 13, le app devono dichiarare la loro intenzione di inviare notifiche richiedendo al sistema l'autorizzazione di runtime android.permission.POST_NOTIFICATION
prima di poter inviare notifiche.
In Android 13 e versioni successive, l'impostazione che determina se un'app può inviare notifiche all'utente è memorizzata nel sistema di autorizzazione.
Prima di Android 13, questa impostazione era memorizzata nel sistema di notifica. Di conseguenza, gli OEM devono eseguire la migrazione dei dati sulle notifiche esistenti relativi al fatto che un'app sia autorizzata a inviare notifiche dal sistema di notifica al sistema di autorizzazione di runtime. Gli OEM devono anche mantenere le API esistenti nel sistema di notifica che mostrano questi dati agli sviluppatori di app.
Le modifiche ai sistemi di notifica e autorizzazione si basano sul
modello di attivazione del comportamento di notifica degli utenti e sono
descritte nella sezione Linee guida per l'implementazione.
Comportamento delle notifiche utente in un modello di attivazione
La tabella seguente illustra il comportamento delle notifiche per varie versioni dell'app su un dispositivo con Android 13:
Dispositivo con Android 13 |
App che hanno come target Android 13 o versioni successive |
App che hanno come target versioni precedenti ad Android 13 |
Nuova installazione
|
Le notifiche vengono bloccate fino a quando non viene richiesto dall'app.
Sono le app a controllare quando chiedere l'autorizzazione.
|
Le notifiche vengono bloccate finché non viene richiesto dall'OS.
L'autorizzazione viene richiesta alla prima esecuzione dell'app.
|
App esistente (upgrade)
|
Le notifiche sono consentite fino a quando non viene richiesto dall'app.
L'autorizzazione temporanea viene concessa finché l'app non la richiede alla prima esecuzione idonea.
|
Le notifiche sono consentite fino a quando non viene richiesto dall'OS.
L'autorizzazione temporanea viene concessa fino alla prima esecuzione dell'app.
|
Linee guida per l'implementazione
Per l'implementazione di riferimento, consulta
service notification,
service permission e
service policy. Per implementare le eccezioni per i gestori delle autorizzazioni predefinite, consulta Autorizzazioni di runtime.
Durante l'implementazione, segui le seguenti linee guida sul comportamento delle notifiche per gli utenti per le app che hanno come target SDK Android 13 o versioni precedenti:
- Le app appena installate su un dispositivo Android 13 non devono inviare una notifica senza che l'utente abbia approvato una richiesta di autorizzazione.
- Se l'app ha come target le versioni Android 13 e superiori, le notifiche devono essere bloccate finché non viene richiesto dall'app, in quanto è l'app a controllare quando e se chiedere l'autorizzazione dell'utente.
- Se l'app ha come target versioni precedenti ad Android 13, le notifiche devono essere bloccate fino a quando non viene richiesto dal sistema operativo. Il sistema operativo deve mostrare la richiesta di autorizzazione alla prima esecuzione
dell'app.
A qualsiasi app esistente sul dispositivo prima di un upgrade ad Android 13 o a qualsiasi app ripristinata tramite il backup e il ripristino deve essere consentito inviare notifiche fino alla prima volta che l'utente avvia un'attività da quell'app.
Per le app che hanno come target l'SDK delle versioni Android 13
e successive, se l'utente non ha personalizzato in precedenza le impostazioni di notifica per
questa app a livello di app o NotificationChannel
, revoca la concessione dell'autorizzazione temporanea. Le app devono quindi chiedere all'utente l'autorizzazione prima di poter continuare a inviare notifiche.
Se un'app di cui è stato eseguito l'upgrade e che ha come target Android 13 non ha attualmente l'autorizzazione di notifica tramite la concessione dell'upgrade temporaneo e l'utente l'ha avviata almeno una volta, l'app deve mostrare una richiesta di autorizzazione di notifica prima di poter eseguire altri servizi in primo piano.
Per le app con un SDK di destinazione di versioni precedenti ad Android 13, intercetta il primo avvio dell'attività dopo che l'app ha creato almeno un NotificationChannel
per mostrare una richiesta di autorizzazione che chiede all'utente se vuole ricevere notifiche dall'app.
Se un utente ha personalizzato in precedenza le impostazioni di notifica a livello di app o NotificationChannel
per un'app sul dispositivo di cui viene eseguito l'upgrade o in un backup in fase di ripristino sul dispositivo, l'impostazione a livello di app deve essere migrata nel sistema di autorizzazione con il flag FLAG_PERMISSION_USER_SET
. Non deve essere mostrata all'utente un'ulteriore richiesta di autorizzazione per le notifiche, a meno che l'app non lo chieda espressamente.
Il backup e il ripristino devono essere compatibili con le versioni precedenti e successive tra un dispositivo Android 13 e un dispositivo con una versione precedente del sistema operativo. I dati di backup generati da un dispositivo Android 13 devono essere ripristinati su una versione precedente del sistema operativo e i dati di backup di una versione precedente del sistema operativo devono essere ripristinati su un dispositivo Android 13.
Le notifiche multimediali associate alla riproduzione multimediale in corso devono essere esenti dall'autorizzazione di notifica.
Convalida le modifiche ai sistemi di notifica e autorizzazione
Per convalidare l'implementazione, esegui i seguenti test:
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Notification permission for opt-in notifications\n\nNotifications in Android 13 use an opt-in model, which\nis a change from previous Android versions, which use an opt-out model. In\nAndroid 13, all apps must ask users for permission before\nsending notification prompts. This model helps reduce notification\ninterruptions, minimizes information overload, and helps users control what\nnotifications appear based on what's important to them. To support the\nopt-in model, OEMs must implement changes in the notification and runtime\npermission systems.\n\nThis page describes what OEMs must implement to support this change and how\nto validate the implementation.\n\nImplement changes for opt-in notifications\n------------------------------------------\n\nStarting with Android 13, apps must declare their\nintent to send notifications by requesting the\n[`android.permission.POST_NOTIFICATION`](https://developer.android.com/about/versions/13/changes/notification-permission)\nruntime permission from the system before they can send notifications.\n\nIn Android 13 and higher, the setting that determines\nif an app can send notifications to the user is stored in the permission system.\nPrior to Android 13, this setting was stored in the\nnotification system. Hence, OEMs must migrate the existing notification data\nabout whether an app is allowed to send notifications, from the notification\nsystem into the runtime permission system. OEMs must also maintain existing APIs\nin the notification system that surface that data to app developers.\n\nChanges to the notification and permission systems are based on the\n[opt-in model of user notification behavior](#behavior-optin) and are\ndescribed in the [Guidelines for implementation](#guidelines-impl) section.\n\n### Behavior of user notifications in an opt-in model\n\nThe following table illustrates the notification behavior for various app\nversions on a device running Android 13:\n\n| Device on Android 13 | Apps targeting Android 13 or higher | Apps targeting versions lower than Android 13 |\n|------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| New install | Notifications are blocked until prompted by the app. Apps control when to ask for permission. | Notifications are blocked until prompted by the OS. Permission is asked on the first run of the app. |\n| Existing app (upgrade) | Notifications are allowed until prompted by the app. Temporary permission is granted until the app asks on the first qualifying run. | Notifications are allowed until prompted by the OS. Temporary permission is granted until the first run of the app. |\n\n### Guidelines for implementation\n\nFor reference implementation, refer to\n[notification service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/notification/),\n[permission service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/pm/permission/) and\n[policy service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/policy). To implement exceptions\nfor default permission handlers see\n[Runtime Permissions](/docs/core/permissions/runtime_perms#integration).\n\nDuring implementation, use the following guidelines on user notification\nbehavior for apps targeting Android 13 or lower SDKs:\n\n- Freshly installed apps on an Android 13 device must not send a notification without the user approving a permission prompt.\n - If the app targets versions Android 13 and higher, notifications must be blocked until prompted by the app as the app controls when and if to ask for user permission.\n - If the app targets versions lower than Android 13, notifications must be blocked until prompted by the OS. The OS must show the permission prompt on the first run of the app.\n- Any app that existed on the device prior to an upgrade to\n Android 13, or any app that was restored through backup\n and restore, must be allowed to send notifications until the first time the user\n launches an activity from that app.\n\n - For apps that target SDK of versions Android 13\n and higher, if the user hasn't previously customized notification settings for\n this app at the app or `NotificationChannel` level, revoke the temporary\n permission grant. Apps must then ask the user for permission before being\n allowed to continue to send notifications.\n\n If an upgraded app targeting Android 13 doesn't\n currently have the notification permission through the temporary upgrade\n grant, and the user has launched it at least once, the app must show a\n notification permission prompt before it's allowed to run any further foreground\n services.\n - For apps that have a target SDK of versions lower than\n Android 13,\n [intercept](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/wm/ActivityInterceptorCallback.java)\n the first activity launch after the app has created at least one `NotificationChannel`\n to show a permission prompt asking if the user wants to receive notifications\n from the app.\n\n If a user previously customized notification settings at the\n app or `NotificationChannel` level for an app on the upgrading device or in a\n backup being restored to the device, the app level setting must be migrated into\n the permission system with the `FLAG_PERMISSION_USER_SET` flag. No further\n notification permission prompt must be shown to the user unless the app\n specifically asks it to be.\n- Backup and restore must be backward and forward compatible between an\n Android 13 device and a device from an earlier OS\n version. Backup data generated from an Android 13\n device must restore onto an earlier OS version, and backup data from an earlier\n OS version must restore onto an Android 13 device.\n\n- Media notifications associated with ongoing media playback must be exempt\n from the notification permission.\n\nValidate changes to the notification and permission systems\n-----------------------------------------------------------\n\nTo validate the implementation, run the following tests:\n\n- Unit tests as specified in [`PreferencesHelperTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java),\n [`NotificationManagerServiceTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java).\n\n- Any manual test that tests upgrades and backup and restore.\n\n- Any CTS Permission and Notification system test that sends notifications.\n Some of these tests are located in [cts/tests/tests/permission/](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Permission/tests/cts/permission/src/android/permission/cts/),\n [NotificationManagerTest.java](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notification/src/android/app/notification/current/cts/NotificationManagerTest.java?q=NotificationManagerTest.java),\n and [cts/tests/tests/notificationlegacy/](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notificationlegacy/)."]]