Правильный способ обновления действий с уведомлениями

#android #notifications

Вопрос:

У меня есть приложение с кнопками мультимедиа и текстом в уведомлении, которое я хочу обновить программно. Поэтому я сделал это:

 public void updateNotificatonIcons() {
    ArrayList<NotificationCompat.Action> acts = NotificationBuilder.mActions;
    acts.set(1, new NotificationCompat.Action((isPlaying) ? R.drawable.my_media_stop : R.drawable.my_media_play, "Stop", stopintent));
    NotificationBuilder.mActions = acts;
    NotificationManagerCompat.from(context).notify(1, NotificationBuilder.build());
}
 

Проблема в том, что AndroidStudio жалуется на NotificationBuilder.mActions :

 Builder.mActions can only be accessed from within the same library group prefix (referenced groupId=androidx.core with prefix androidx from groupId=Android)
 

Я погуглил и добавил @SuppressLint("RestrictedApi") перед методом, и он работает.

Является ли это «правильным» способом обновления уведомления? Есть ли лучший способ без необходимости @SupressLint ?

Комментарии:

1. Я сделал то же самое, что и вы, в одном из моих проектов, хотя предполагаемый способ-использовать clearActions , а затем addAction для каждого из ваших действий я проверил исходный код, и все, что делают эти две функции, — это изменяют mActions , поэтому я счел обыденным перестроить список массивов, когда я обновлял одно из 3 действий.