Aplikacja może wymagać pilnej interwencji użytkownika w określonych sytuacjach, takich jak trwający alarm lub połączenie przychodzące. W przypadku aplikacji 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 opisujemy, jak osiągnąć na urządzeniach z Androidem 10 (poziom interfejsu API 29) Android 13 (poziom API 33).
Dodaj uprawnienie POST_PowiadomieniaS
Od Androida 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 powiadomienia były wyświetlane prawidłowo, a funkcja zarządzać powiadomieniami w ustawieniach aplikacji. Więcej informacji na temat: kanały powiadomień można znaleźć w sekcji Tworzenie powiadomień i zarządzanie nimi kanałów.
Utwórz kanały powiadomień w ramach zajęć Application
Metoda 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 coś takiego jak ilustracja 1 na ekranie systemowym Informacje o aplikacji:

Zarządzanie uprawnieniami do powiadomień
Od Androida 13 musisz poprosić o zezwolenie na wyświetlanie powiadomień, zanim zaczniesz je wysyłać do użytkowników.
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 działa Android 13, kliknięcie przycisku Request
permission
powoduje wyświetlenie okna pokazanego na ilustracji 2:

Jeśli użytkownik zaakceptuje prośbę o przyznanie uprawnień, sekcja Informacje o aplikacji będzie wyglądać np. 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 następujący 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 zaakceptować lub odrzucić przychodzące połączenie telefoniczne.
Jeśli powiadomienie jest w toku, na przykład przychodzące połączenie telefoniczne, powiązanie powiadomienia z pierwszym planem; usługi. Następujący 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);