Android可以在收起的通知中显示操作图标吗?

时间:2018-07-05 11:27:45

标签: android android-notifications

查看通知中的操作的默认行为是展开通知。我可以显示它们而无需扩展它们吗?

1 个答案:

答案 0 :(得分:2)

是的! :)您可以在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之后添加了缺少的括号,并改进了缩进。