我有一个通知,我正在尝试通过重复使用相同的通知生成器来更新,但是没有办法清除按钮,你只能调用addAction
. 不使用相同的 Builder 会导致通知闪烁,这是不可取的。有什么解决办法吗?我正在使用NotificationCompat
v4 支持库。
问问题
3416 次
3 回答
6
notificationBuilder.mActions.clear();
它实际上是public ArrayList<Action>
,所以你可以用它做任何你想做的事情。
于 2015-06-22T14:43:10.393 回答
2
您有两种选择来实现这一目标:
- 使用自定义布局(如果需要,只需复制本机通知的设计),然后在 RemoteView 中使用它,并使视图可见或隐藏它们。例如
remoteView.setViewVisibility(...)
...或更改按钮的文本... 使用反射来清除构建器的操作。会像下面这样工作:
try { //Use reflection to remove all old actions Field f = mNotificationBuilder.getClass().getDeclaredField("mActions"); f.setAccessible(true); f.set(mNotificationBuilder, new ArrayList<>()); } catch (NoSuchFieldException e) {} catch (IllegalAccessException e) {}
于 2015-04-23T07:48:37.897 回答
0
从 API 24 开始,您可以使用方法setActions()
和更新图标、文本和待处理的意图。
Notification.Action.Builder builder = new Notification.Action.Builder( Icon.createWithResource( this, R.drawable.ic_pause) , getString( R.string.pause ), PendingIntent.getBroadcast( this, 1, new Intent( TIMER_PAUSE ), 0 ) );
Notification.Action action = builder.build();
...
notification_builder.setActions( action );
Notification notification = notification_builder.build();
NotificationManager nm = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE );
nm.notify( 1, notification );
于 2021-11-26T08:58:37.927 回答