W niektórych sytuacjach aplikacja może potrzebować pilnego zwrócenia uwagi użytkownika, np. gdy włącza się alarm lub przychodzi połączenie. W aplikacjach kierowanych na urządzenia z Androidem 9 (poziom interfejsu API 28) lub starszym możesz to zrobić, uruchamiając aktywność, gdy aplikacja działa w tle. W tym dokumencie pokazujemy, jak uzyskać takie działanie na urządzeniach z Androidem 10 (API na poziomie 29) do Androida 13 (API na poziomie 33).
Dodawanie uprawnienia POST_NOTIFICATIONS
W Androidzie 13 dodaj do pliku AndroidManifest.xml ten wiersz:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Gdy to zrobisz, 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.
Utwórz kanały powiadomień w metodzie onCreate klasy 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 aplikację po raz pierwszy, na ekranie systemowym Informacje o aplikacji zobaczy coś podobnego do tego, co widać na ilustracji 1:
Zarządzanie uprawnieniami do powiadomień
Od Androida 13 przed wyświetleniem użytkownikom powiadomień musisz poprosić ich 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 na urządzeniu jest zainstalowany Android 13, kliknięcie przycisku Request
permission spowoduje wyświetlenie okna dialogowego pokazanego na ilustracji 2:
Jeśli użytkownik zaakceptuje prośbę o uprawnienia, sekcja Informacje o aplikacji będzie wyglądać jak na ilustracji 3:
Tworzenie powiadomienia o wysokim priorytecie
Podczas tworzenia powiadomienia podaj 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(0, 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") }
Powiadomienie w tym przykładzie wygląda jak na rysunku 4:
Powiadomienie o trwającej aktywności
Gdy wyświetlisz użytkownikowi powiadomienie, może on potwierdzić lub odrzucić alert lub przypomnienie z Twojej aplikacji. Użytkownik może na przykład zaakceptować lub odrzucić połączenie przychodzące.
Jeśli powiadomienie jest ciągłe, np. połączenie przychodzące, powiąż je z usługą na pierwszym planie. Poniższy 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);
Rozważ użycie aktualizacji na żywo
Powiadomienia bieżące, które są wrażliwe na czas, mogą zyskać na większej widoczności. Rozważ promowanie bieżących powiadomień wymagających szybkiego działania jako aktualizacji na żywo, aby wyświetlać je w różnych interfejsach systemu.