Wyświetlaj pilne powiadomienia

W niektórych sytuacjach, np. w przypadku trwającego alarmu lub połączenia przychodzącego, aplikacja może potrzebować pilnie zwrócić na siebie uwagę użytkownika. W aplikacjach kierowanych na urządzenia z Androidem 9 (poziom API 28) lub starszym można to zrobić, uruchamiając aktywność, gdy aplikacja działa w tle. Z tego dokumentu dowiesz się, jak osiągnąć takie zachowanie na urządzeniach z Androidem 10 (poziom API 29) do Androida 13 (poziom API 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 Application klasy 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 Twoją aplikację po raz pierwszy, na ekranie systemowym Informacje o aplikacji zobaczy coś podobnego do tego, co widać na ilustracji 1:

Ilustracja przedstawiająca ekran Informacje o aplikacji – Powiadomienia w aplikacji.
Ilustracja 1. Sekcja Powiadomienia na ekranie Informacje o aplikacji w ustawieniach systemowych aplikacji.

Zarządzanie uprawnieniami do powiadomień

W Androidzie 13 poproś o uprawnienia do powiadomień, zanim zaczniesz je wyświetlać użytkownikom.

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 Twoje urządzenie działa pod kontrolą Androida 13, kliknięcie przycisku Request permission spowoduje wyświetlenie okna dialogowego pokazanego na ilustracji 2:

Ilustracja przedstawiająca okno z prośbą o uprawnienia
Ilustracja 2. Okno systemowe z prośbą o uprawnienia do powiadomień.

Jeśli użytkownik zaakceptuje prośbę o uprawnienia, sekcja Informacje o aplikacji będzie wyglądać jak na ilustracji 3:

Obraz pokazujący ekran Informacje o aplikacji po przyznaniu zgody na wyświetlanie powiadomień
Ilustracja 3. Uprawnienia do powiadomień przyznane.

Tworzenie powiadomienia o wysokim priorytecie

Podczas tworzenia powiadomienia dodaj opisowy tytuł i wiadomość.

Poniższy 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() spowoduje wyświetlenie powiadomienia w ten sposób:

Kotlin

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

Powiadomienie w tym przykładzie wygląda jak na ilustracji 4:

Obraz przedstawiający powiadomienie o wysokim priorytecie
Ilustracja 4. Powiadomienie o wysokim priorytecie.

Powiadomienie o trwającej aktywności

Gdy wyświetlisz użytkownikowi powiadomienie, może on potwierdzić lub odrzucić alert albo przypomnienie z Twojej aplikacji. Użytkownik może na przykład odebrać lub odrzucić połączenie przychodzące.

Jeśli powiadomienie jest powiadomieniem o trwającej aktywności, np. o połączeniu przychodzącym, powiąż je z usługą działającą na pierwszym planie. Poniższy fragment kodu pokazuje, jak wyświetlić powiadomienie powiązane z usługą działającą 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 o trwającej aktywności wymagające szybkiego działania mogą być bardziej widoczne. Rozważ promowanie powiadomień o trwającej aktywności wymagających szybkiego działania jako aktualizacji na żywo, aby wyświetlać je w różnych interfejsach systemowych.