#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 действий.