Изменение кнопок действий в уведомлении

У меня есть уведомление, которое я пытаюсь обновить, повторно используя один и тот же Notification Builder, но нет возможности очистить кнопки, вы можете вызвать addAction . Не использование одного и того же Builder приводит к появлению уведомления, что нежелательно. Есть ли какие-либо решения для этого? Я использую NotificationCompat из библиотеки поддержки v4.

Solutions Collecting From Web of "Изменение кнопок действий в уведомлении"

 notificationBuilder.mActions.clear(); 

Это на самом деле public ArrayList<Action> , поэтому вы можете делать с ним whataver.

У вас есть два варианта:

  1. Используйте специальный макет (просто скопируйте дизайн собственного уведомления, если хотите), а затем используйте его в RemoteView и просто сделайте вид видимым или скройте. remoteView.setViewVisibility(...) помощью remoteView.setViewVisibility(...) … Или измените текст кнопок …
  2. Используйте рефлексию, чтобы очистить действия строителей. Будет работать следующим образом:

     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) {}