Ứng dụng của bạn có thể cần thu hút sự chú ý khẩn cấp của người dùng trong một số trường hợp nhất định, chẳng hạn như chuông báo đang hoạt động hoặc cuộc gọi đến. Trong ứng dụng nhắm đến các thiết bị chạy Android 9 (API cấp 28) trở xuống, bạn có thể xử lý việc này bằng cách khởi chạy một hoạt động khi ứng dụng chạy ở chế độ nền. Tài liệu này trình bày cách đạt được hành vi này trên thiết bị chạy Android 10 (API cấp 29) đến Android 13 (API cấp 33).
Thêm quyền POST_NOTIFICATIONS
Kể từ Android 13, hãy thêm dòng sau vào
Tệp AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Sau khi có mã này, bạn có thể tạo kênh thông báo.
Tạo kênh thông báo
Tạo một kênh thông báo để hiển thị chính xác thông báo của bạn và cho phép người dùng quản lý thông báo trong phần cài đặt ứng dụng. Để biết thêm thông tin về kênh thông báo, hãy xem phần Tạo và quản lý kênh thông báo.
Tạo kênh thông báo trong lớp Application
của bạn
Phương thức 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) } }
Khi người dùng chạy ứng dụng của bạn lần đầu tiên, họ sẽ thấy nội dung như hình 1 trên màn hình hệ thống Thông tin ứng dụng của ứng dụng:

Quản lý quyền gửi thông báo
Kể từ Android 13, hãy yêu cầu cấp quyền gửi thông báo trước bạn hiển thị thông báo cho người dùng.
Cách triển khai tối thiểu sẽ có dạng như sau:
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") }
Nếu thiết bị của bạn đang chạy Android 13, thì thao tác nhấn vào nút Request
permission
sẽ kích hoạt hộp thoại hiển thị trong hình 2:

Nếu người dùng chấp nhận yêu cầu cấp quyền, phần Thông tin ứng dụng của ứng dụng sẽ có giao diện như hình 3:

Tạo thông báo có mức độ ưu tiên cao
Khi tạo thông báo, hãy thêm một tiêu đề và thông báo mang tính mô tả.
Ví dụ sau đây chứa một thông báo:
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()) }
Hiển thị thông báo cho người dùng
Việc gọi hàm showNotification()
sẽ kích hoạt thông báo như sau:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
Thông báo trong ví dụ này có dạng như hình 4:

Thông báo liên tục
Khi bạn hiển thị thông báo cho người dùng, họ có thể xác nhận hoặc đóng cảnh báo hoặc lời nhắc của ứng dụng. Ví dụ: người dùng có thể chấp nhận hoặc từ chối một cuộc gọi điện thoại đến.
Nếu thông báo của bạn là thông báo đang diễn ra, chẳng hạn như cuộc gọi điện thoại đến, hãy liên kết thông báo đó với một dịch vụ trên nền trước. Đoạn mã sau đây cho biết cách hiển thị thông báo liên kết với một dịch vụ trên nền trước:
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);