【发布时间】:2021-06-07 05:49:23
【问题描述】:
我正在尝试在音频 Android 应用程序中使用 MediaStyle 通知,如 audio app documentation 和 media style documentation 中所述。我能够成功地显示带有功能传输控件的通知,所以我相信我的实现是合理的。但是,当我按照建议通过NotificationCompat.Builder 的.setStyle() 设置androidx.media.app.NotificationCompat.MediaStyle 时,它似乎忽略了.setOngoing() 标志的任何使用。 setOngoing 根据源代码确保“通知不能被解除”。我在未设置媒体样式时遇到了所描述的行为,但在我使用 .setStyle() 时却没有。
我想知道是否有人知道解决方法,或者是否有一些未记录的要求,我需要安抚使用带有媒体样式通知的.setOngoing()。我的编译 SDK 版本、目标 SDK 版本和最小 SDK 版本都是 30。请让我知道是否有任何其他代码有用;我相信我提供的是相关的内容。
为了说明这种困境,我提供了一些屏幕截图,显示了通知如何在应用媒体样式时被关闭,而在不应用媒体样式时不可关闭。
依赖关系(全部是最新的):
val appCompatVersion: String = "1.4.0-alpha01"
val mediaVersion: String = "1.4.0-alpha01"
val media2Version: String = "1.0.0-alpha04"
implementation("androidx.appcompat:appcompat:$appCompatVersion")
implementation("androidx.media:media:$mediaVersion")
implementation("androidx.media2:media2:$media2Version")
private val notification: Notification?
get() {
val controller: MediaControllerCompat = mediaSession.controller ?: return null
val description: MediaDescriptionCompat = controller.metadata?.description ?: return null
val notificationManager: NotificationManager = notificationManager ?: return null
val notificationChannel = NotificationChannel(
CHANNEL_ID,
CHANNEL_NAME,
NotificationManager.IMPORTANCE_NONE
)
if (notificationChannel !in notificationManager.notificationChannels) {
notificationManager.createNotificationChannel(notificationChannel)
}
...
val style = androidx.media.app.NotificationCompat.MediaStyle()
.setMediaSession(controller.sessionToken)
.setShowActionsInCompactView(0, 1, 2)
.setShowCancelButton(false)
return NotificationCompat.Builder(
this,
CHANNEL_ID
).apply {
actions.forEach { addAction(it) }
color = backgroundColor
}
.setContentTitle(description.title)
.setContentText(description.subtitle)
.setSmallIcon(smallIcon)
.setLargeIcon(largeIcon)
.setOngoing(true)
.setColorized(true)
.setAutoCancel(false)
.setAllowSystemGeneratedContextualActions(true)
.setContentIntent(controller.sessionActivity)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setChannelId(CHANNEL_ID)
.setStyle(style)
.build()
}
【问题讨论】:
-
您找到解决此问题的方法了吗?我也面临同样的问题
标签: android kotlin android-notifications androidx android-notification.mediastyle