android - 如何在 Android P 上获取停止媒体样式通知的 X 按钮?
问题描述
我正在尝试在MediaStyle
Notification
Android P 上展示 X。我看到很多帖子基本上说这不适用于 API 21 及更高版本,但我认为这是一个应用程序的屏幕截图:
我在下面尝试了这段代码,但没有显示:
Notification notification = new NotificationCompat.Builder(getApplicationContext(), TESTID)
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentTitle("Track title")
.setContentText("Artist - Album")
.addAction(R.drawable.ic_fast_forward_black_24dp, "fwd", pi)
.addAction(R.drawable.ic_fast_forward_black_24dp, "fwd", pi)
.addAction(R.drawable.ic_fast_forward_black_24dp, "fwd", pi)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.vectors_525058875))
.setAutoCancel(false)
.setStyle(new MediaStyle()
.setMediaSession(mediaSessionCompat.getSessionToken()).setShowCancelButton(true).setCancelButtonIntent(pi))
.build();
notificationManager.notify(300, notification);
解决方案
您必须使用与 MediaStyle 类似的鲜为人知的类DecoratedMediaCustomViewStyle,除了它允许您使用 RemoteViews 自定义显示到内容区域的内容。诀窍是复制 MediaStyle 布局(您可以从支持库中复制它)并对其进行自定义,例如添加一个 X 按钮。
但是,有两个警告:
- DecoratedMediaCustomViewStyle 在小米设备上无法正确渲染(看起来全白)。因此,您必须在这些设备上回退到 MediaStyle
- 在 DecoratedMediaCustomViewStyle 的自定义 RemoteViews 中为 TextView 设置颜色不起作用,无论是在 XML 中设置还是通过代码设置。所以你被默认的文本颜色(黑色)困住了。
2020 年更新:DecoratedMediaCustomViewStyle 使 MIUI 12 在 SystemUI 中崩溃。MIUI 主要出现在小米/Redmi 设备上。
推荐阅读
- android - 即使我在 android 中使用了服务,我的操作也不起作用
- nsepy - 如何从 get_history 函数中获取相关数据,只说“基础价格”,没有日期
- python - 比较python中的文件和文件夹名称
- shell - 如何在linux shell脚本中获取hbase的所有表并对每张表进行操作?
- html - 在导航栏 bootstrap-4 Beta 下方放置一个背景图片
- php - Redmine + PHP Wamp:如何在现有 Wamp 服务器中安装 Redmine
- ios - 无法仅重新加载选定的单元格
- java - 异步 Web 服务方法 (JAVA CXF)
- sql - SQL - 以两种不同方式查询相关表
- hadoop - 嵌套选择在蜂巢中不起作用