在 API 25 或更低时触发通知时没有提醒/声音
No Heads-Up / Sound when firing Notification on API 25 or lower
在 Android 上使用 NotificationCompat 时,通知仅在 API 26 级或更高级别上按预期工作。
- 我想要:在每个可能的 API 级别 (21+) 上带有提示消息 + 声音的通知。
- 我做了:设置一个NotificationChannel,设置频道重要性和通知优先级,如notification docs
中所述
- 我收到:在 API 级别 26+ 上带有提示和声音的通知以及 没有 提示和 没有 声音 API 25 级或以下
代码:
val chan2 = NotificationChannel(SECONDARY_CHANNEL,
getString(R.string.noti_channel_second), NotificationManager.IMPORTANCE_HIGH)
manager.createNotificationChannel(chan2)
fun getNotification2(title: String, body: String): NotificationCompat.Builder {
return NotificationCompat.Builder(applicationContext, SECONDARY_CHANNEL)
.setContentTitle(title)
.setContentText(body)
.setSmallIcon(smallIcon)
.setAutoCancel(true)
}
fun notifySecondaryChannel(id: Int, notification: NotificationCompat.Builder) {
notification.priority = NotificationCompat.PRIORITY_MAX
manager.notify(id, notification.build())
}
依赖关系:
- 支持库版本:27.1.1
- 编译/目标 sdk: 27
- gradle 工具:3.1.3
完整代码 on github(分叉并更新 google 样本)。
可以使用以下方式播放声音:
builder.setDefaults(Notification.DEFAULT_SOUND) or
builder.setDefaults(Notification.DEFAULT_ALL)
或 setSound 的覆盖之一。例如:
public Notification.Builder setSound (Uri sound,
int streamType)
在 Android 上使用 NotificationCompat 时,通知仅在 API 26 级或更高级别上按预期工作。
- 我想要:在每个可能的 API 级别 (21+) 上带有提示消息 + 声音的通知。
- 我做了:设置一个NotificationChannel,设置频道重要性和通知优先级,如notification docs 中所述
- 我收到:在 API 级别 26+ 上带有提示和声音的通知以及 没有 提示和 没有 声音 API 25 级或以下
代码:
val chan2 = NotificationChannel(SECONDARY_CHANNEL,
getString(R.string.noti_channel_second), NotificationManager.IMPORTANCE_HIGH)
manager.createNotificationChannel(chan2)
fun getNotification2(title: String, body: String): NotificationCompat.Builder {
return NotificationCompat.Builder(applicationContext, SECONDARY_CHANNEL)
.setContentTitle(title)
.setContentText(body)
.setSmallIcon(smallIcon)
.setAutoCancel(true)
}
fun notifySecondaryChannel(id: Int, notification: NotificationCompat.Builder) {
notification.priority = NotificationCompat.PRIORITY_MAX
manager.notify(id, notification.build())
}
依赖关系:
- 支持库版本:27.1.1
- 编译/目标 sdk: 27
- gradle 工具:3.1.3
完整代码 on github(分叉并更新 google 样本)。
可以使用以下方式播放声音:
builder.setDefaults(Notification.DEFAULT_SOUND) or
builder.setDefaults(Notification.DEFAULT_ALL)
或 setSound 的覆盖之一。例如:
public Notification.Builder setSound (Uri sound,
int streamType)