In bestimmten Situationen muss Ihre App möglicherweise dringend die Aufmerksamkeit des Nutzers auf sich ziehen, z. B. bei einem laufenden Wecker oder einem eingehenden Anruf. In Apps, die auf Geräte mit Android 9 (API-Level 28) oder niedriger ausgerichtet sind, können Sie dies dadurch bewerkstelligen, dass Sie eine Aktivität starten, während die App im Hintergrund ausgeführt wird. In diesem Dokument wird beschrieben, wie Sie dieses Verhalten auf Geräten mit Android 10 (API-Level 29) bis Android 13 (API-Level 33) erzielen.
Fügen Sie die Berechtigung POST_NOTIFICATIONS hinzu.
Ab Android 13 fügen Sie der Datei AndroidManifest.xml
die folgende Zeile hinzu:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Anschließend können Sie einen Benachrichtigungskanal erstellen.
Benachrichtigungskanal erstellen
Erstellen Sie einen Benachrichtigungskanal, damit Ihre Benachrichtigungen richtig angezeigt werden und Nutzer sie in den App-Einstellungen verwalten können. Weitere Informationen zu Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.
Erstellen Sie Ihre Benachrichtigungskanäle in der Methode onCreate
der Klasse 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) } }
Wenn der Nutzer Ihre App zum ersten Mal ausführt, sieht er auf dem Systembildschirm App-Informationen ungefähr das, was in Abbildung 1 dargestellt ist:
Berechtigungen für Benachrichtigungen verwalten
Ab Android 13 müssen Sie Berechtigungen für Benachrichtigungen anfordern, bevor Sie Nutzern Benachrichtigungen anzeigen.
Die minimale Implementierung sieht so aus:
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") }
Wenn auf Ihrem Gerät Android 13 ausgeführt wird, wird durch Tippen auf die Schaltfläche Request
permission
das Dialogfeld in Abbildung 2 geöffnet:
Wenn der Nutzer die Berechtigungsanfrage akzeptiert, sieht der Bereich App-Informationen der App in Abbildung 3 so aus:
Benachrichtigung mit hoher Priorität erstellen
Geben Sie beim Erstellen der Benachrichtigung einen aussagekräftigen Titel und eine aussagekräftige Nachricht an.
Das folgende Beispiel enthält eine Benachrichtigung:
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()) }
Benachrichtigung für den Nutzer anzeigen
Durch den Aufruf der Funktion showNotification()
wird die Benachrichtigung wie unten beschrieben ausgelöst:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
Die Benachrichtigung in diesem Beispiel sieht in etwa so aus wie in Abbildung 4:
Benachrichtigung über laufende Aktivitäten
Wenn Sie die Benachrichtigung für den Nutzer anzeigen, kann er die Benachrichtigung oder Erinnerung Ihrer App bestätigen oder schließen. So kann der Nutzer beispielsweise einen eingehenden Anruf annehmen oder ablehnen.
Wenn es sich um eine fortlaufende Benachrichtigung handelt, z. B. einen eingehenden Anruf, verknüpfen Sie die Benachrichtigung mit einem Dienst im Vordergrund. Das folgende Code-Snippet zeigt, wie eine Benachrichtigung für einen Dienst im Vordergrund angezeigt wird:
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);