Напоминания Android Webview

Николай12 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
07.05.2018

Нужно сделать напоминание в установленные дату и время через 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-кошелек) / Сбербанк.