A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Permissão para notificação de solicitações
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
As notificações no Android 13 usam um modelo de permissão, que
é uma mudança em relação às versões anteriores do Android, que usam um modelo de desativação. No
Android 13, todos os apps precisam pedir permissão aos usuários antes
de enviar solicitações de notificação. Esse modelo ajuda a reduzir as interrupções
de notificações, minimiza o excesso de informações e ajuda os usuários a controlar quais
notificações aparecem com base no que é importante para eles. Para oferecer suporte ao
modelo de ativação, os OEMs precisam implementar mudanças nos sistemas de permissões de notificação e
de execução.
Esta página descreve o que os OEMs precisam implementar para oferecer suporte a essa mudança e como
validar a implementação.
Implementar mudanças nas notificações de ativação
A partir do Android 13, os apps precisam declarar a
intent para enviar notificações solicitando a
permissão de execução android.permission.POST_NOTIFICATION
do sistema antes de enviar notificações.
No Android 13 e versões mais recentes, a configuração que determina
se um app pode enviar notificações ao usuário é armazenada no sistema de permissões.
Antes do Android 13, essa configuração era armazenada no
sistema de notificações. Portanto, os OEMs precisam migrar os dados de notificação atuais
sobre se um app tem permissão para enviar notificações do sistema de notificação
para o sistema de permissão de execução. Os OEMs também precisam manter as APIs
no sistema de notificações que mostram esses dados aos desenvolvedores de apps.
As mudanças nos sistemas de notificação e permissão são baseadas no
modelo de ativação do comportamento de notificação do usuário e são
descritas na seção Diretrizes para implementação.
Comportamento das notificações do usuário em um modelo de permissão
A tabela a seguir ilustra o comportamento de notificação de várias versões
do app em um dispositivo com o Android 13:
Dispositivo com Android 13 |
Apps destinados ao Android 13 ou mais recente |
Apps destinados a versões anteriores ao Android 13 |
Nova instalação
|
As notificações são bloqueadas até que o app solicite.
Os apps controlam quando pedir permissão.
|
As notificações são bloqueadas até que o SO solicite.
A permissão é solicitada na primeira execução do app.
|
App atual (upgrade)
|
As notificações são permitidas até que o app solicite.
A permissão temporária é concedida até que o app solicite na primeira execução qualificada.
|
As notificações são permitidas até que o SO solicite.
A permissão temporária é concedida até a primeira execução do app.
|
Diretrizes para implementação
Para a implementação de referência, consulte
serviço de notificação,
serviço de permissão e
serviço de política. Para implementar exceções
para gerenciadores de permissão padrão, consulte
Permissões de execução.
Durante a implementação, use as seguintes diretrizes sobre o comportamento de notificação
do usuário para apps com segmentação para o SDK do Android 13 ou versões anteriores:
- Apps recém-instalados em um dispositivo Android 13 não podem
enviar uma notificação sem que o usuário aprove uma solicitação de permissão.
- Se o app for destinado ao Android 13 e
versões mais recentes, as notificações precisarão ser bloqueadas até que sejam solicitadas pelo app, já que ele
controla quando e se vai pedir permissão ao usuário.
- Se o app for direcionado a versões anteriores ao
Android 13, as notificações precisarão ser bloqueadas até
que sejam solicitadas pelo SO. O SO precisa mostrar a solicitação de permissão na primeira execução
do app.
Qualquer app que tenha existido no dispositivo antes de uma atualização para
o Android 13 ou que tenha sido restaurado por backup
e restauração precisa ter permissão para enviar notificações até a primeira vez que o usuário
iniciar uma atividade desse app.
Para apps com SDKs das versões do Android 13
e mais recentes, se o usuário não tiver personalizado as configurações de notificação
para esse app no nível do app ou do NotificationChannel
, revogue a concessão de permissão
temporária. Os apps precisam pedir permissão ao usuário antes de
continuar a enviar notificações.
Se um app atualizado destinado ao Android 13 não
tiver a permissão de notificação pelo upgrade temporário
e o usuário o tiver iniciado pelo menos uma vez, o app precisará mostrar uma
permissão de notificação antes de poder executar outros serviços
em primeiro plano.
Para apps com um SDK de destino de versões anteriores ao
Android 13,
intercepte
a primeira inicialização de atividade depois que o app criar pelo menos um NotificationChannel
para mostrar uma solicitação de permissão perguntando se o usuário quer receber notificações
do app.
Se um usuário tiver personalizado as configurações de notificação no
nível do app ou do NotificationChannel
de um app no dispositivo que está sendo atualizado ou em um
backup que está sendo restaurado no dispositivo, a configuração no nível do app precisa ser migrada para
o sistema de permissão com a flag FLAG_PERMISSION_USER_SET
. Nenhum outro
pedido de permissão de notificação precisa ser mostrado ao usuário, a menos que o app
especifique isso.
O backup e a restauração precisam ser compatíveis com versões anteriores e posteriores entre um
dispositivo Android 13 e um dispositivo de uma versão anterior do
SO. Os dados de backup gerados em um dispositivo Android 13
precisam ser restaurados em uma versão anterior do SO, e os dados de backup de uma versão
anterior do SO precisam ser restaurados em um dispositivo Android 13.
As notificações de mídia associadas à reprodução de mídia em andamento precisam estar isentas
da permissão de notificação.
Validar mudanças nos sistemas de notificação e permissão
Para validar a implementação, execute os seguintes testes:
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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/)."]]