Seu app pode precisar chamar a atenção do usuário com urgência em determinadas situações, como um alarme em andamento ou uma chamada recebida. Em apps destinados a dispositivos com o Android 9 (nível 28 da API) ou versões anteriores, é possível processar isso iniciando uma atividade enquanto o app está em segundo plano. Este documento mostra como alcançar esse comportamento em dispositivos com o Android 10 (nível 29 da API) ao Android 13 (nível 33 da API).
Adicionar a permissão POST_NOTES
A partir do Android 13, adicione a linha abaixo ao
arquivo AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Em seguida, crie um canal de notificação.
Criar um canal de notificação
Crie um canal para mostrar as notificações corretamente e permitir que o usuário as gerencie nas configurações do app. Para saber mais sobre canais de notificação, consulte Criar e gerenciar canais de notificação.
Crie seus canais de notificação no método onCreate
da classe Application
:
Kotlin
class DACapp : Application() { override fun onCreate() { super.onCreate() val channel = NotificationChannel( CHANNEL_ID, "High priority notifications", NotificationManager.IMPORTANCE_HIGH ) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } }
Quando o usuário executa o app pela primeira vez, ele vê algo como a Figura 1 na tela do sistema Informações do app:
![Uma imagem mostrando a tela "Informações do app", "Notificação" do seu app.](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_channel_empty.png?authuser=8&hl=pt)
Gerenciar permissões de notificações
A partir do Android 13, solicite permissões de notificações antes de mostrá-las aos usuários.
A implementação mínima é semelhante a esta:
Kotlin
val permissionLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.RequestPermission(), onResult = { hasNotificationPermission = it } ) ... Button( onClick = { if (!hasNotificationPermission) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }, ) { Text(text = "Request permission") }
Se o dispositivo estiver executando o Android 13, tocar no botão Request
permission
acionará a caixa de diálogo mostrada na Figura 2:
![Imagem mostrando a caixa de diálogo de solicitação de permissão](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_request_dialog.png?authuser=8&hl=pt)
Se o usuário aceitar a solicitação de permissão, a seção Informações do app será parecida com a Figura 3:
![Uma imagem mostrando a tela de informações do app após conceder uma solicitação de permissão de notificação](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_granted.png?authuser=8&hl=pt)
Criar uma notificação de prioridade alta
Ao criar a notificação, inclua um título descritivo e uma mensagem.
O exemplo a seguir contém uma notificação:
Kotlin
private fun showNotification() { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_auto_awesome_24) .setContentTitle("HIGH PRIORITY") .setContentText("Check this dog puppy video NOW!") .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION) notificationManager.notify(666, notificationBuilder.build()) }
Exibir a notificação para o usuário
Chamar a função showNotification()
aciona a notificação da seguinte maneira:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
A notificação neste exemplo é semelhante à Figura 4:
![Uma imagem mostrando uma notificação de alta prioridade](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification.png?authuser=8&hl=pt)
Notificação em andamento
Quando você exibe sua notificação ao usuário, ele pode confirmar ou dispensar o alerta ou lembrete do seu app. Por exemplo, o usuário pode aceitar ou rejeitar uma chamada telefônica recebida.
Se sua notificação for contínua, como uma chamada telefônica recebida, associe-a a um serviço em primeiro plano. O snippet de código abaixo mostra como mostrar uma notificação associada a um serviço em primeiro plano:
Kotlin
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
Java
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification);