Как я могу получить кнопку X для остановки уведомления о стиле мультимедиа на Android P? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь показать X на MediaStyle Notification Android P. Я вижу много сообщений о том, что это не будет работать на 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);

1 Ответ

0 голосов
/ 16 января 2019

Вы должны использовать очень малоизвестный класс DecoratedMediaCustomViewStyle , который похож на MediaStyle, за исключением того, что он позволяет вам настраивать то, что вы отображаете в области контента, используя RemoteViews. Хитрость заключается в том, чтобы скопировать макет MediaStyle (вы можете скопировать его из библиотеки поддержки) и настроить его, добавив, например, кнопку X.

Однако есть 2 предостережения:

  • DecoratedMediaCustomViewStyle некорректно отображается на устройствах Xiaomi (выглядит белым). Таким образом, вы должны иметь запасной вариант MediaStyle на этих устройствах
  • Установка цвета для TextView в пользовательских RemoteViews DecoratedMediaCustomViewStyle не работает, как в XML, так и в коде. Таким образом, вы застряли с цветом текста по умолчанию (черный).
...