W pewnych sytuacjach aplikacja może wymagać pilnej interwencji użytkownika, np. gdy trwa alarm lub połączenie przychodzące. W aplikacjach kierowanych na urządzenia z Androidem 9 (poziom interfejsu API 28) lub starszym możesz rozwiązać ten problem, uruchamiając działanie, gdy aplikacja działa w tle. Z tego dokumentu dowiesz się, jak uzyskać takie działanie na urządzeniach z Androidem 10 (poziom interfejsu API 29) i Androidem 13 (poziom API 33).
Dodaj uprawnienie POST_MESSAGES
W Androidzie 13 dodaj ten wiersz do pliku AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Potem możesz utworzyć kanał powiadomień.
Tworzenie kanału powiadomień
Utwórz kanał powiadomień, aby prawidłowo wyświetlać powiadomienia i zezwolić użytkownikowi na zarządzanie powiadomieniami w ustawieniach aplikacji. Więcej informacji o kanałach powiadomień znajdziesz w artykule na temat tworzenia kanałów powiadomień i zarządzania nimi.
Utwórz kanały powiadomień w metodzie onCreate
zajęć 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) } }
Gdy użytkownik uruchomi Twoją aplikację po raz pierwszy, na ekranie systemowym Informacje o aplikacji zobaczy coś takiego:
![Obraz przedstawiający ekran Informacje o aplikacji i Powiadomienia.](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_channel_empty.png?authuser=1&hl=pl)
Zarządzanie uprawnieniami do powiadomień
W Androidzie 13 przed wyświetleniem powiadomień użytkownikom należy prosić użytkowników o zgodę na wyświetlanie powiadomień.
Minimalna implementacja wygląda tak:
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") }
Jeśli masz urządzenie z Androidem 13, naciśnięcie przycisku Request
permission
spowoduje wyświetlenie okna pokazanego na ilustracji 2:
![Obraz przedstawiający okno z prośbą o uprawnienia](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_request_dialog.png?authuser=1&hl=pl)
Jeśli użytkownik zaakceptuje prośbę o uprawnienia, sekcja Informacje o aplikacji będzie wyglądać tak jak na ilustracji 3:
![Obraz przedstawiający ekran Informacje o aplikacji po otrzymaniu prośby o zgodę na wyświetlanie powiadomień](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_granted.png?authuser=1&hl=pl)
Tworzenie powiadomienia o wysokim priorytecie
Utwórz powiadomienie, podając opisowy tytuł i treść.
Ten przykład zawiera powiadomienie:
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()) }
Wyświetl powiadomienie użytkownikowi
Wywołanie funkcji showNotification()
powoduje wysłanie powiadomienia w następujący sposób:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
Powiadomienie w tym przykładzie wygląda tak:
![Obraz przedstawiający powiadomienie o wysokim priorytecie](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification.png?authuser=1&hl=pl)
Powiadomienie bieżące
Gdy wyświetlisz powiadomienie użytkownikowi, może on zaakceptować lub odrzucić alert lub przypomnienie w aplikacji. Na przykład użytkownik może zaakceptować lub odrzucić połączenie przychodzące.
Jeśli powiadomienie ma charakter trwający, np. przychodzi połączenie telefoniczne, powiąż je z usługą na pierwszym planie. Ten fragment kodu pokazuje, jak wyświetlić powiadomienie powiązane z usługą na pierwszym planie:
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);