Zeitkritische Benachrichtigungen anzeigen

Ihre App muss in bestimmten Situationen, z. B. bei einem laufenden Alarm oder einem eingehenden Anruf, die Aufmerksamkeit des Nutzers dringend erregen. Bei Apps, die auf Geräte mit Android 9 (API-Level 28) oder niedriger ausgerichtet sind, können Sie dazu eine Aktivität starten, während die App im Hintergrund ausgeführt wird. In diesem Dokument wird beschrieben, wie du dieses Verhalten auf Geräten mit Android 10 (API-Level 29) bis Android 13 (API-Level 33) umsetzen kannst.

Berechtigung POST_NOTIFICATIONS hinzufügen

Fügen Sie der Datei AndroidManifest.xml ab Android 13 die folgende Zeile hinzu:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Danach können Sie einen Benachrichtigungskanal erstellen.

Benachrichtigungskanal erstellen

Erstellen Sie einen Benachrichtigungskanal, um Ihre Benachrichtigungen korrekt anzuzeigen und dem Nutzer die Verwaltung der Benachrichtigungen in den App-Einstellungen zu ermöglichen. Weitere Informationen zu Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.

Erstellen Sie Ihre Benachrichtigungskanäle in der Methode onCreate Ihrer Application-Klasse:

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, wird auf dem Systembildschirm App-Info der App etwa Abbildung 1 angezeigt:

Ein Bild, auf dem der Bildschirm „App-Info“ und „Benachrichtigung“ Ihrer App zu sehen sind.
Abbildung 1: Bereich für Benachrichtigungen auf dem Bildschirm App-Info in den Systemeinstellungen der App

Berechtigungen für Benachrichtigungen verwalten

Ab Android 13 müssen Sie Berechtigungen zum Senden von Benachrichtigungen anfordern, bevor Sie Nutzern Benachrichtigungen anzeigen lassen.

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 deinem Gerät Android 13 ausgeführt wird, wird durch Tippen auf die Request permission-Schaltfläche das in Abbildung 2 gezeigte Dialogfeld ausgelöst:

Bild, auf dem das Dialogfeld für die Berechtigungsanfrage zu sehen ist
Abbildung 2. Systemdialogfeld für die Anfrage zur Benachrichtigungsberechtigung.

Wenn der Nutzer die Berechtigungsanfrage akzeptiert, sieht der Abschnitt App-Info der App in Abbildung 3 aus:

Ein Bild, auf dem der Bildschirm „App-Info“ zu sehen ist, nachdem die Berechtigungsanfrage zum Senden von Benachrichtigungen gewährt wurde
Abbildung 3: Benachrichtigungsberechtigungen gewährt.

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 Nutzer anzeigen

Durch den Aufruf der Funktion showNotification() wird die Benachrichtigung so ausgelöst:

Kotlin

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

Die Benachrichtigung in diesem Beispiel sieht wie in Abbildung 4 aus:

Bild, das eine Benachrichtigung für hohe Priorität zeigt
Abbildung 4: Eine Benachrichtigung mit hoher Priorität.

Laufende Benachrichtigung

Wenn Sie Ihre Benachrichtigung für den Nutzer einblenden, kann dieser die Benachrichtigung oder Erinnerung Ihrer App bestätigen oder ablehnen. Der Nutzer kann beispielsweise einen eingehenden Anruf annehmen oder ablehnen.

Wenn es sich um eine laufende Benachrichtigung handelt, z. B. ein eingehender Anruf, verknüpfe sie mit einem Dienst im Vordergrund. Das folgende Code-Snippet zeigt, wie eine Benachrichtigung angezeigt wird, die mit einem Dienst im Vordergrund verknüpft ist:

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);