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

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

Ответы

Ответ 1

notificationBuilder.mActions.clear();

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

Ответ 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) {}