Напоминания Android Webview
Нужно сделать напоминание в установленные дату и время через web интерфейс (с мостами в java). Также сделать возможность удаления или изменения текста, даты напоминания. Предусмотреть загрузку напоминаний (имитация). Вся работа скрипта основана на id напоминаний в webview.
Алгоритм добавления и клика по напоминанию в панели уведомлений/в баре (пример):
Открываем первое мая (клик на "1 мая"). Текст одного из напоминаний меняем на произвольный. Выбираем текущую дату, текущее время + 5 мин. Нажимаем сохранить. (см. Алгоритм сохранения) Закрываем программу (убиваем процесс) или перезагружаем телефон. Ждем. Через 5 мин в шторке уведомлений, на экране блокировки, в верхнем баре появляется напоминание с длинным текстом ( BigTextStyle().bigText() ) со звуком (произвольный) и вибрацией. Очень большое количество текста не должно вызвать ошибки. Длительность звука и вибрации, если не кликаем по уведомлению - 30 сек. Кликаем на уведомление (в этот момент напоминание стирается из натива): открывается программа и происходит открытие дня, в котором мы сохранили уведомление - у нас это первое мая. Открытие происходит путем выбора элемента по id (см. пункт "Сохранение") и клику по прородителю (id.previousSibling.previousSibling.click()).
Алгоритм Сохранения:
При сохранении напоминания помимо манипуляций в нативе, к div contenteditable="true">Напоминаниеdiv> добавляем id вида: "01052018_18:00" (пример), т.е. дата и время напоминания. Этот id мы используем в дальнейшем для:
- Открытия дня (при клике на напоминание в баре/панели уведомлений) в котором сохранено напоминание (см. Алгоритм добавления и клика по напоминанию)
- Загрузке напоминаний и установки даты и времени срабатывания нативно (кнопка "Загрузить напоминания")
- Удаления напоминаний - Изменении даты или текста напоминания
- Вставки даты и времени напоминания в input type="datetime-local"> при загрузке или выгрузке в документ (ls.innerHTML = localStorage.getItem('ls')) сохраненных напоминаний. Если напоминание уже имеет id (сохранялось ранее), то при изменении текста или даты(времени) срабатывания и сохранении - не должно появляться нового напоминания - мы редактируем существующее.
Если сохраняли по ошибки на прошедшее время - ничего не делаем (обработаю сам).
Алгоритм загрузки напоминаний (имитация загрузки из облака):
При клике на "Загрузить напоминания", загружаем напоминания и проходимся по ним с целью установить даты и время срабатывания напоминаний в натив. Используем для этого id. В примере только один id, соответственно на практике может быть больше. Если по какой то причине в нативе есть такое же напоминание, что и в загружаемых - это не должно вызывать ошибку или остановку скрипта.
Работа с прошедшими напоминаниями
Может случиться так, что у человека сел телефон и включил он его уже после времени напоминания - в этом случае напоминание все равно должно сработать, сколько бы времени не прошло. Если напоминание сработало, но по нему не кликнули и телефон сел - оно должно опять сработать при включении телефона.
Загрузить напоминания
Открыть первое мая
1 мая
Напоминание1
Сохранить
Удалить
Напоминание2
Сохранить
Удалить
Напоминание3
Сохранить
Удалить
Открыть второе мая
2 мая
Напоминание1
Сохранить
Удалить
Напоминание2
Сохранить
Удалить
Напоминание3
Сохранить
Удалить
Работа на Android 5 и далее
При выключении/включении телефона – ни чего не сбивается
Структура приложения с webview: файл index.html в основе.
Основные операции в Java должны быть прокоментированы
Допустимо использование Jquery.
Оплата после теста лично, при встрече в Москве или через Яндекс деньги/ Webmoney(r-кошелек) / Сбербанк.