android - 如何获得 X 按钮以停止 Android P 上的媒体样式通知?

标签 android android-notifications

我正在尝试在 MediaStyle Notification Android P 上显示 X。我看到很多帖子基本上都在说这不适用于 API 21 及更高版本我想,但这是显示它的应用程序的屏幕截图:

enter image description here

我试过下面这段代码,但没有显示:

    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);

最佳答案

您必须使用非常鲜为人知的类 DecoratedMediaCustomViewStyle它与 MediaStyle 类似,只是它允许您使用 RemoteViews 自定义显示到内容区域的内容。诀窍是复制 MediaStyle 布局(您可以从支持库中复制它)并自定义它,例如添加一个 X 按钮。

但是,有两个注意事项:

  • DecoratedMediaCustomViewStyle 无法在小米设备上正确呈现(它看起来全是白色)。因此,您必须在这些设备上回退到 MediaStyle
  • 在 DecoratedMediaCustomViewStyle 的自定义 RemoteView 中为 TextView 设置颜色不起作用,无论是在 XML 中还是通过代码设置。 所以您只能使用默认的文本颜色(黑色)。

2020 年更新:DecoratedMediaCustomViewStyle 使 MIUI 12 在 SystemUI 中崩溃。 MIUI 主要出现在小米/红米设备上。

关于android - 如何获得 X 按钮以停止 Android P 上的媒体样式通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54100696/

相关文章:

iphone - 有没有查条形码的网站?

java - 通过 FCM onMessageReceived 方法从 RemoteMessage 获取值

java - 媒体样式 : RemoteServiceException: Bad notification posted from package

android - 从设备内存而不是 Assets 中读取音频文件

android - 从 Fragment 访问 EditTextPreference 的文本

android - 将android应用程序限制在特定区域

android - 如何创建提醒通知

android - Android 上未收到通知

android - 向上导航未启动父 Activity

java - 无法实例化检测 ComponentInfo