Android 在API 25或更低版本上触发通知时无抬头/声音

Android 在API 25或更低版本上触发通知时无抬头/声音,android,android-notifications,android-support-library,Android,Android Notifications,Android Support Library,在Android上使用时,通知仅在API级别26或更高的情况下才能正常工作 我想要:在每一个可能的API级别(21+)上都有提示消息+声音的通知 我做到了:设置NotificationChannel,设置通道重要性和通知优先级,如 我收到:在API级别26+上有抬头+声音的通知,在API级别25或更低级别上有无抬头和无声音的通知 代码: val chan2 = NotificationChannel(SECONDARY_CHANNEL, getString(R.string.noti

在Android上使用时,通知仅在API级别26或更高的情况下才能正常工作

  • 我想要:在每一个可能的API级别(21+)上都有提示消息+声音的通知
  • 我做到了:设置NotificationChannel,设置通道重要性和通知优先级,如
  • 我收到:在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
  • 梯度工具:3.1.3

完整代码(分叉和更新的谷歌示例)。

可以通过以下方式播放声音:

builder.setDefaults(Notification.DEFAULT_SOUND) or 
builder.setDefaults(Notification.DEFAULT_ALL)
或setSound的其中一个覆盖。对于exmaple:

public Notification.Builder setSound (Uri sound, 
                int streamType)

你试过builder.setDefaults(Notification.DEFAULT\u SOUND)或builder.setDefaults(Notification.DEFAULT\u ALL)吗?你成功了吗?@Elletlar是的,我成功了!
DEFAULT\u声音
DEFAULT\u都能工作!为什么需要
setDefaults
调用?我在文档中找不到任何关于这是强制性的内容。非常感谢(当你回答时,我会接受你的答案)不确定:设置默认值一直是一种标准做法。了解为什么新设备的这种行为发生了变化是件好事。