Ihre App muss in bestimmten Situationen möglicherweise die Aufmerksamkeit der Nutzenden wie z. B. einen aktiven Alarm oder einen 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 erfahren Sie, wie Sie auf Geräten mit Android 10 (API-Level 29) Android 13 (API-Level 33).
Berechtigung POST_NOTIFICATIONS hinzufügen
Ab Android 13 fügen Sie die folgende Zeile zu Ihrem
AndroidManifest.xml
-Datei:
<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 Benachrichtigungen in den App-Einstellungen verwalten. Weitere Informationen zu Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.
Benachrichtigungskanäle in der Klasse "Application
" erstellen:
Methode onCreate
:
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 in etwa Abbildung 1 angezeigt. auf dem Systembildschirm App-Info:
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 in Abbildung 2 gezeigte Dialogfeld ausgelöst:
Wenn der Nutzer die Berechtigungsanfrage annimmt, sieht der Bereich App-Info der App wie Abbildung 3:
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:
Laufende Benachrichtigung
Wenn du deine Benachrichtigung für den Nutzer zeigst, kann er ihn bestätigen oder ablehnen die Benachrichtigung oder Erinnerung Ihrer App. Beispielsweise kann der Nutzer eine eingehenden Telefonanruf.
Bei einer laufenden Benachrichtigung, z. B. bei einem eingehenden Anruf, die Benachrichtigung mit einem 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);