Форум программистов, компьютерный форум CyberForum.ru

Оповещение по заданному времени и дате - Android

Восстановить пароль Регистрация
 
ZYL
3 / 3 / 0
Регистрация: 12.01.2013
Сообщений: 47
26.12.2015, 16:03     Оповещение по заданному времени и дате #1
Здравствуйте, есть задача вывести оповещение по заданной пользователем дате и времени.
В сети много примеров, но не понятно как с конкретной датой работать.
Буду благодарен пояснениям)

Пока имеется такой код :
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Intent notificationIntent = new Intent(context, ToDoActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,
        PendingIntent.FLAG_CANCEL_CURRENT);
 
Notification.Builder builder = new Notification.Builder(context);
 
builder.setContentIntent(contentIntent)
         .setSmallIcon(R.drawable.ic_launcher)
         // Создаем оповещение сразу после добавления таска в приложении
         .setWhen(System.currentTimeMillis())
         .setContentTitle("Напоминание MyNotes")
         .setContentText(description);
 
Notification notification = builder.build();
notification.defaults = Notification.DEFAULT_SOUND;
 
NotificationManager notificationManager = (NotificationManager) context
        .getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(Integer.parseInt(id), notification);


Добавлено через 54 минуты
Ошибочка вышла, метод .setWhen(System.currentTimeMillis()) работает не так, как ожидалось, он просто выводит дату в окошко оповещения, я то думал он время оповещения задаёт..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2015, 16:03     Оповещение по заданному времени и дате
Посмотрите здесь:

Android Получить день недели по дате
Оповещение при звонке Android
Выборка по дате в listView Android
Android Выборка из БД по заданному параметру
Android Оповещение в UI из потока
Округление времени Android
Android складывание времени
Android Поиск по дате в БД
Android Получение доступа к дате/времени планшета
Программа для определения дня недели по дате Android
Уведомление по заданному времени Android
Android Уведомления по времени

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
26.12.2015, 16:37     Оповещение по заданному времени и дате #2
ZYL, почитайте про AlarmManager
ZYL
3 / 3 / 0
Регистрация: 12.01.2013
Сообщений: 47
26.12.2015, 18:40  [ТС]     Оповещение по заданному времени и дате #3
Смотрел и в сторону AlarmManager, но как-то что-то..)
Ещё видел вариант через TimerTask сделать, но тоже не обошлось без ошибок

В случае, когда в timer.schedule() вторым параметром передаю задержку просто числом, всё работает но если задержку считать как разность дат в милисекундах thatDay.getTimeInMillisec() - System.currentTimeInMillisec(), получаю исключение delay < 0, даже если таск через минуту запланирован.

Если передаю вторым параметром thatDay.getTime(), то оповещение сразу приходит..
Может с датой и временем что-то не так.. Они строками заданы ("26/12/2015", "15:00")

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                thatDay.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(0, 2)));
                thatDay.set(Calendar.MONTH, Integer.parseInt(date.substring(3, 5)));
                thatDay.set(Calendar.YEAR, Integer.parseInt(date.substring(6,10)));
                thatDay.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.substring(0, 2)));
                thatDay.set(Calendar.MINUTE, Integer.parseInt(time.substring(3, 5)));
 
                Intent notificationIntent = new Intent(context, ToDoActivity.class);
                notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
                PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,
                        PendingIntent.FLAG_CANCEL_CURRENT);
 
                Notification.Builder builder = new Notification.Builder(context);
 
                builder.setContentIntent(contentIntent)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setWhen(System.currentTimeMillis())
                        .setContentTitle("Напоминание MyNotes")
                        .setContentText(description);
 
                Notification notification = builder.build();
                notification.defaults = Notification.DEFAULT_SOUND;
 
                NotificationManager notificationManager = (NotificationManager) context
                        .getSystemService(Context.NOTIFICATION_SERVICE);
                notificationManager.notify(Integer.parseInt(id), notification);
Yandex
Объявления
26.12.2015, 18:40     Оповещение по заданному времени и дате
Ответ Создать тему
Опции темы

Текущее время: 04:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru