Да! :) Вы можете на 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
и улучшен отступ.