【问题标题】:Dismissing MediaStyle notifications关闭 MediaStyle 通知
【发布时间】:2022-03-25 07:06:40
【问题描述】:

Lollipop 中的新 Android MediaStyle 通知没有关闭按钮。看起来 Google Code 上已经存在一个错误。

在解决该错误之前,有没有人知道什么是解决此问题的好方法?

我们应该延迟切换到 MediaStyle 吗?或者使用其中一项操作作为关闭按钮?

【问题讨论】:

标签: android android-5.0-lollipop


【解决方案1】:

补充@ianhanniballake 的回答:

  1. 对于棒棒糖前使用:

    notificationBuilder.setStyle(new NotificationCompat.MediaStyle().setShowCancelButton(true).setCancelButtonIntent(createPlayIntent());
    
  2. 对于棒棒糖后: 要启动媒体播放器通知,必须使用startForeground()Foreground Service 启动媒体服务。现在的问题是这个Service 是不可解雇的。即使我们设置了setOngoing(false)

遵循的最佳做法是使服务在暂停状态下可关闭。为此,当您的媒体服务收到暂停状态回调时,请致电 stopForeground(false)。这将停止服务,但使通知保持活动状态。现在可以将其关闭。

编码愉快。

【讨论】:

  • 这是行不通的..如果您在使用 startForeground() 启动该服务后从服务内部停止前台,它将在几秒钟后在 Android O 及更高版本上崩溃..因为您说它是前台服务,但没有成为前台
  • 不适合我。当 PlaybackState 更改为暂停时,我明确调用 stopForeground(false) 但我无法刷掉通知
【解决方案2】:

似乎运作良好的一种机制是在播放音乐时使通知持续进行,并在音乐暂停时使其不持续(允许滑动关闭)。这似乎是谷歌音乐already uses的技术。

【讨论】:

  • 我已经浏览了Google Play Music source 一段时间,但在我的情况下使用stopForeground(false) 根本不起作用。我没有在我的通知上设置任何标志,它仍然不能被解雇。如果您有时间,您能否扩展您的答案以包含一个简短的示例?
  • 我只是注意到我正在查看的源文件(我链接的那个)实际上在 2 年内没有更新,因此完全不相关。任何指针仍然非常感谢。当音乐暂停时,我在通知生成器上执行.setOngoing(false)
  • @Michd 如果您使用startForeground() 启动服务,您将无法关闭通知。您应该只使用普通的startService() 来启动您的服务,然后显示您的通知。然后你可以根据需要使用.setOngoing()
  • 音乐/音频服务的最佳实践不是 startForeground() 吗?国际海事组织,会的。
  • @jasonhudgins - 你说得很对,我在我的 Media Playback the right way talk 中提到了这一点 - 请注意,NotificationCompat.MediaStyle 可以解决 Lollipop 之前的版本。
【解决方案3】:

简单但可能不是最合适的解决方案是添加一个带有“关闭”图标的操作。然后只需提供一个 PendingIntent,它会在点击图标时触发:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2018-11-01
    相关资源
    最近更新 更多