在某些情况下,您的应用可能需要立即引起用户的注意, 例如闹钟正在进行时或有来电时面向以下设备开发应用 Android 9(API 级别 28)或更低版本,您可以通过启动 activity。本文档介绍了如何 此行为在搭载 Android 10(API 级别 29)的设备上 Android 13(API 级别 33)。
添加 POST_NOTIFICATIONS 权限
从 Android 13 开始,请将下面这行代码添加到您的
AndroidManifest.xml
文件:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
获得这些信息后,您就可以创建通知渠道了。
创建通知渠道
创建通知渠道以正确显示您的通知,并让 用户在应用设置中管理通知。如需详细了解 请参阅创建和管理通知 渠道。
在 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) } }
当用户首次运行您的应用时,他们会看到图 1 所示的内容 在应用的应用信息系统屏幕中,执行以下操作:
![显示应用信息、通知屏幕的图片。](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_channel_empty.png?authuser=0000&hl=nb)
管理通知权限
从 Android 13 开始, 向用户显示通知
最低实现如下所示:
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") }
如果您的设备搭载的是 Android 13,点按 Request
permission
按钮会触发如图 2 所示的对话框:
![显示权限请求对话框的图片](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_request_dialog.png?authuser=0000&hl=nb)
如果用户接受权限请求,应用的应用信息部分将如下所示: 如图 3 所示:
![显示授予通知权限请求后显示“应用信息”屏幕的图片](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_granted.png?authuser=0000&hl=nb)
创建高优先级通知
创建通知时,请添加描述性标题和消息。
以下示例包含一个通知:
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()) }
向用户显示通知
调用 showNotification()
函数按如下方式触发通知:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
此示例中的通知如图 4 所示:
![显示高优先级通知的图片](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification.png?authuser=0000&hl=nb)
持续性通知
当您向用户显示通知时,用户可以确认或关闭通知 提醒或提醒例如,用户可以接受或拒绝 来电。
如果您收到的通知是正在进行中的通知(例如来电), 将通知与前台 服务。以下代码段 展示了如何显示与前台服务关联的通知:
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);