У меня есть приложение для Android с работающей функцией, которую я теперь перенес на Android 9 (ранее предназначался для Android 8), что несколько нарушило эту функцию.
У меня есть этот поток (при запуске приложения):
- Экран выключен
- Что-то происходит, что вызывает уведомление
- Экран включен * выполняется действие для уведомления *
- Уведомление автоматически исчезает из панели уведомлений
После нацеливания на Android 9 уведомление не исчезает на шаге 4.
В результате после выполнения действия я все еще могу нажать на уведомление, и действие происходит снова (нежелательное поведение).
Это изменение поведения кажется недокументированным (предыдущее значение по умолчанию было отклонять уведомление после выполнения действия). Как мне заставить мое приложение работать по-старому?
Вопрос: Как вернуть старое поведение? (уведомление отменяется автоматически, когда действие запускается и пользователь его видит )
Обновление 1: Некоторый (сокращенный / упрощенный) код, который, надеюсь, прояснит, как это работает
public class FooActivity extends AppCompatActivity {
}
public class NotificationUtil {
// A lot of boilerplate omitted where notification channels are created
public void notify(Intent startActivity) {
ContextProvider.getSystemService(Context.NOTIFICATION_SERVICE).notify("NotificationUtil", 0, new NotificationCompat.Builder().nextIntent(startActivity).x().y().build());
}
}
Таким образом, шаг 2 вызывает NotificationUtil.notify () с действием Intent, установленным в FooActivity. FooActivity запускается, как и ожидалось, автоматически при включении экрана (например, уведомление, по моему мнению, неявно «расходуется». Но уведомление остается в панели уведомлений, и можно снова нажать и запустить FooActivity (нежелательное поведение).
Обновление 2 : Вопрос не в как программно отклонить уведомление (на это отвечает Как отклонить уведомление после нажатия действия ), но Скорее , когда , чтобы сделать это так, чтобы уведомление не уменьшалось до тех пор, пока пользователь фактически не посмотрел на него.
Ссылки
- https://developer.android.com/about/versions/pie/android-9.0-changes-28
- https://developer.android.com/guide/topics/ui/notifiers/notifications