Создание уведомлений и widget
Данная программа на создание widget, который показывает сколько осталось дней до даты, которая устанавливается в самом приложении. Также было реализовано уведомление, которые вызывается в выбранный день, 9 часов утра.
Само приложение содержит в себе небольшое количество строк кода. Рассмотрим поподроднее все классы, которые были созданы для реализации поставленной задачи. Всего в программе было использовано 3 класса.
ExampleAppWidgetProvider. Этот класс наследуется от AppWidgetProvider и реализует одну абстрактную функцию "onUpdate", которая вызывается автоматически системой андройд. Данная функция обновляет информацию в widget, через определенное время. Чтобы данная функция могла вызываться при неработающем приложении, класс ExampleAppWidgetProvider был добавлен в манифест. Также данный класс содержит 2 статических метода, через которые обновляется widget из самой программы, когда выбирается другой день или день выбран впервые. Настройки widget прописаны в файле "example_appwidget_info.xml", а визуальная часть прописана в файле "example_appwidget.xml".
CallDataSend. Этот класс наследуется от BroadcastRexeiver, это необходимо для вызова функции "onReceive", когда приложение не работает. Этот класс также был добавлен в манифест. Как можно уже было понять, данный класс создает уведомление. Вообще реализуются две функции, одна создает каналы для уведомления (функция createNotificationChannel), другая создает само уведомление (функция onReceive).
MainActivity. Этот класс реализует обычное активити, которое содержит в себе календарь, для выбора даты, и один TextView, в которым дублируется информация, которая будет показана в widget. В MainActivity прописана только одна стандартная функция onCreate, в которой просто инициализируется значения переменных и подключается слушатель к календарю. В слушателе вычисляется количество дней, которых осталось до выбранной даты, обновляется widget и создается уведомление. Уведомление передается классу AlarmManager, который отвечает за то, чтобы данное уведомление вызвалось примерно в нужное время.
Функционал данной программы не сильно обширен, но распишем основные действия, которые можно совершать. При запуске приложения, открывается активити, в котором расположен календарь. При выборе любой даты, создается уведомление и обновляется widget. Если виджета еще нет, то его можно добавить. Уведомление сработает в 9 часов утра выбранного дня. Также и уведомление и виджет являются кликабельными и открывают MainActivity.
Скриншоты программы:
Активити
Widget
Уведомление