W pewnych sytuacjach, np. gdy trwa alarm lub przychodzi połączenie, aplikacja może potrzebować pilnej uwagi użytkownika. 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. W tym dokumencie znajdziesz informacje o tym, jak uzyskać takie działanie na urządzeniach z Androidem w wersji od 10 (poziom API 29) do 13 (poziom API 33).
Dodaj uprawnienie POST_NOTIFICATIONS
Od Androida 13 dodaj do pliku AndroidManifest.xml
ten wiersz:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Następnie możesz utworzyć kanał powiadomień.
Tworzenie kanału powiadomień
Utwórz kanał powiadomień, aby prawidłowo wyświetlać powiadomienia i umożliwić użytkownikowi zarządzanie nimi w ustawieniach aplikacji. Więcej informacji o kanałach powiadomień znajdziesz w artykule Tworzenie kanałów powiadomień i zarządzanie nimi.
Kanały powiadomień twórz w metodach klasy Application
:
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) } }
Gdy użytkownik uruchomi aplikację po raz pierwszy, zobaczy na ekranie Informacje o aplikacji coś podobnego do rysunku 1:
Zarządzanie uprawnieniami do powiadomień
Od Androida 13 przed wyświetlaniem powiadomień użytkownikom musisz poprosić o zezwolenie na wysyłanie 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, kliknięcie przycisku Request
permission
spowoduje wyświetlenie okna pokazanego na rysunku 2:
Jeśli użytkownik zaakceptuje prośbę o uprawnienia, sekcja Informacje o aplikacji będzie wyglądać tak jak na ilustracji 3:
Tworzenie powiadomienia o wysokim priorytecie
Podczas tworzenia powiadomienia dodaj opisowy tytuł i wiadomość.
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świetlanie powiadomienia użytkownikowi
Wywołanie funkcji showNotification()
powoduje wyświetlenie powiadomienia w ten sposób:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
W tym przykładzie powiadomienie wygląda jak na rysunku 4:
Powiadomienie w toku
Gdy wyświetlisz powiadomienie użytkownikowi, może on je potwierdzić lub zamknąć. Użytkownik może na przykład odebrać lub odrzucić przychodzące połączenie telefoniczne.
Jeśli powiadomienie jest ciągłe, np. połączenie przychodzące, powiązaj 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);