У меня есть уведомление, которое я пытаюсь обновить, повторно используя один и тот же 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) {}