Zeitkritische Benachrichtigungen anzeigen

Deine App muss in bestimmten Situationen, z. B. bei einem aktiven Alarm oder einem eingehenden Anruf, möglicherweise dringend die Aufmerksamkeit des Nutzers auf sich ziehen. Bei Apps, die auf Geräte mit Android 9 (API-Level 28) oder niedriger ausgerichtet sind, können Sie eine Aktivität starten, während die App im Hintergrund ausgeführt wird. In diesem Dokument wird beschrieben, wie das auf Geräten mit Android 10 (API-Level 29) bis Android 13 (API-Level 33) funktioniert.

Berechtigung POST_NOTIFICATIONS hinzufügen

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

Erstelle einen Benachrichtigungskanal, damit deine Benachrichtigungen richtig angezeigt werden und der Nutzer Benachrichtigungen in den App-Einstellungen verwalten kann. 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 deine App zum ersten Mal ausführt, wird auf dem Systembildschirm App-Info in etwa Abbildung 1 angezeigt:

Ein Bild, auf dem der Benachrichtigungsbildschirm Ihrer App mit App-Informationen zu sehen ist.
Abbildung 1. Benachrichtigungen auf dem Bildschirm App-Info der Systemeinstellungen der App.

Berechtigungen für Benachrichtigungen verwalten

Ab Android 13 müssen Berechtigungen zum Senden von Benachrichtigungen angefordert werden, bevor Nutzern Benachrichtigungen angezeigt werden.

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 in Abbildung 2 gezeigte Dialogfeld ausgelöst:

Ein Bild, das das Dialogfeld „Berechtigungsanfrage“ zeigt
Abbildung 2. Systemdialogfeld für die Berechtigungsanfrage zum Senden von Benachrichtigungen.

Wenn der Nutzer die Berechtigungsanfrage akzeptiert, sieht der Bereich App-Info der App wie 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: Berechtigungen zum Senden von Benachrichtigungen gewährt.

Benachrichtigung mit hoher Priorität erstellen

Geben Sie beim Erstellen der Benachrichtigung einen aussagekräftigen Titel und eine aussagekräftigen 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 so ausgelöst:

Kotlin

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

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

Ein Bild, das eine Benachrichtigung mit hoher Priorität zeigt
Abbildung 4: Eine Benachrichtigung mit hoher Priorität.

Laufende Benachrichtigung

Wenn du deine Benachrichtigung für den Nutzer einblendest, kann er die Benachrichtigung oder Erinnerung durch deine App bestätigen oder schließen. Beispielsweise kann der Nutzer einen eingehenden Anruf annehmen oder ablehnen.

Bei einer laufenden Benachrichtigung, z. B. bei einem eingehenden Telefonanruf, musst du die Benachrichtigung mit einem Dienst im Vordergrund verknüpfen. 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);