如何在 Android P 上获得用于停止媒体样式通知的 X 按钮?

cas*_*orz 5 android android-notifications

我正在尝试在MediaStyle NotificationAndroid 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);
Run Code Online (Sandbox Code Playgroud)

b0b*_*b0b 4

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

但是,有两个注意事项:

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

2020 更新:DecoatedMediaCustomViewStyle 导致 MIUI 12 在 SystemUI 中崩溃。MIUI 主要用于小米/红米设备。