Может ли Android отображать значки действий в свернутых уведомлениях? - PullRequest
0 голосов
/ 05 июля 2018

Поведение по умолчанию для просмотра действий в уведомлениях заключается в расширении уведомления. Могу ли я показать их без необходимости их расширения?

1 Ответ

0 голосов
/ 05 июля 2018

Да! :) Вы можете на Android 5.0+ (начиная с уровня API 21).

Вот рабочий пример:

 if (Build.VERSION.SDK_INT >= 26)    // Android 8 or later?
 {
     builder = new Notification.Builder (this, Const.NOTIF_CHANNEL_ID);
 }
 else
 {
     builder = new Notification.Builder (this);
 }

 builder.setSmallIcon (R.drawable.ic_notif_icon, 0)
     .setVisibility (Notification.VISIBILITY_PUBLIC)
     .setCategory (Notification.CATEGORY_ALARM)
     .setContentIntent (pendingMainActionIntent)
     .setOngoing (true)
     .addAction (R.drawable.ic_button1, "BUTTON 1", pButton1Intent)
     .addAction (R.drawable.ic_button2, "BUTTON 2", pButton2Intent)
     .addAction (R.drawable.ic_button3, "BUTTON 3", pButton3Intent)
     // Apply the media style template so that we get buttons on the notification widget even when it's in the collapsed mode
     .setStyle (new Notification.MediaStyle ().setShowActionsInCompactView (0, 1, 2));

Обратите внимание, в основном, на последнюю строку, которая обеспечивает то, что вы хотите:

.setStyle (new Notification.MediaStyle ().setShowActionsInCompactView (0, 1, 2))

Также обратите внимание на параметры, переданные в setShowActionsInCompactView. Например, если вы хотите, чтобы отображались только КНОПКА 2 и КНОПКА 3 (а не КНОПКА 1), вы должны сделать это следующим образом:

.setShowActionsInCompactView (1, 2) 

Протестировано на Android 8.1, Google Pixel 2 и Samsung S9, но код должен работать на Android 5-7 и других телефонах. Наслаждайтесь.

ОБНОВЛЕНИЕ : предыдущий код работал только на Android 8. Сделано так, что он поддерживает более ранние версии. Также на Android 8, вы не должны забывать звонить builder.setChannelId (Const.NOTIF_CHANNEL_ID) прямо под кодом, который я разместил.

ОБНОВЛЕНИЕ 2 : добавлена ​​пропущенная скобка после setShowActionsInCompactView и улучшен отступ.

...