Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
#1

Создать нотификацию, и не отображать ее ночью

29.09.2014, 11:21. Просмотров 890. Ответов 6
Метки нет (Все метки)

Подскажите. Стоит такая задача. Нужно создавать нотификации таким образом, чтобы время старта нотификации было с 12 утра до 22 00 вечера. И нужно обязательно учесть часовой пояс.

Может быть есть какие-то готовые решения?

Моя нотификация создается за 7 дней до ее старта. Получается как отложенная нотификация. Существует шанс, что пользователь уедет из страны, например, и ему в 3 часа ночи запипикает мое приложение.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2014, 11:21
Ответы с готовыми решениями:

Перевод арифметических выражений в обратную польскую нотификацию
Здравствуйте, извините что обращаюсь, но больше некуда. Пробовал поискать решение в интернете,...

Приложение, позволяющее группой флажков отображать или не отображать элементы управления в окне прило
Добрый вечер! Скажите, пожалуйста, как исправить код, чтобы элементы, при нажатии на флажок...

Создать представление которое будет отображать невыданные книги
Хочу создать представление которое будет отображать не выданные книги!!! В данном запросе...

Как в DataGridView создать столбец, который будет отображать номер строки
как в DataGridView создать столбец, который будет отображать номер строки?? При этом данные верно...

Поймал я этой ночью интересный баг
Поймал я этой ночью интересный баг. Есть мега328p заливаю я внутрь прошиву отцепляю от...

6
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
29.09.2014, 11:31 #2
kpoxaa, задача в том, чтобы оно не запикало ночью вообще, или чтобы была отложена до утра?
0
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
29.09.2014, 11:38  [ТС] #3
Я думаю оба варианта.

При создании нотификации я создаю переменную отвечающую за время старта таким образом : беру текущее время и прибалвяю к нему 7 дней. Это получается допустим - 28.09.2014 14-00. Но если получится 07-00 я могу доматать время до 12-00. Тут вроде бы все просто. Может быть этот вариант мне и подойдет?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
29.09.2014, 11:39 #4
kpoxaa, как Вы запускаете её через 7 дней? Это AlarmManager? Где Вы её храните? БД?
0
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
29.09.2014, 11:44  [ТС] #5
Вызываю метод:
Java
1
2
3
4
5
6
7
8
9
10
11
public void CreateWeekDateTimeNotification(String text, long delay)
    {
        
        AlarmManager am             = (AlarmManager) mActivity.getSystemService(Context.ALARM_SERVICE);
        Intent intent               = new Intent((Context)mActivity, WeekDateNotification.class);
        intent.putExtra(MESSAGE_EXTRA, text);
        PendingIntent pendingIntent;
        pendingIntent               = PendingIntent.getBroadcast((Context)mActivity, n_WeekDate, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        am.cancel(pendingIntent);
        am.set(AlarmManager.RTC_WAKEUP, delay, pendingIntent);
    }
Свой ресивер:
public class WeekDateNotification extends BroadcastReceiver

А в ресивере:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
    public void onReceive(Context context, Intent intent) 
    {
        NotificationManager nm      = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        String appName              = context.getString(R.string.app_name);
        String message              = intent.getExtras().getString(LocalNotificationsManager.MESSAGE_EXTRA);
        Notification notification   = new Notification(R.drawable.icon, message, System.currentTimeMillis());
        // Интент для активити, которую мы хотим запускать при нажатии на уведомление
        Intent intentTL             = new Intent(context, Flight.class);
        
        intentTL.putExtra("StartFromLocalNotification", "LAUNCH_GAME_FROM_LOCAL_NOTIFICATION_DATE_WEEK");
        
        notification.setLatestEventInfo(context, appName, message, PendingIntent.getActivity(context, LocalNotificationsManager.n_WeekDate, intentTL, PendingIntent.FLAG_CANCEL_CURRENT));
        notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL;
        nm.notify(LocalNotificationsManager.n_WeekDate, notification);
    }
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
29.09.2014, 11:57 #6
Лучший ответ Сообщение было отмечено kpoxaa как решение

Решение

kpoxaa,

Проверка ночи:

Java
1
2
3
4
5
public static boolean isNight() {
        Calendar cal = Calendar.getInstance();
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        return hour < 6 || hour > 18;
    }
В onReceive просто проверяем,
Java
1
if (isNight()) return;
Это если надо просто проигнорировать.

Если надо её отправить утром, то придётся ещё раз её запланировать (CreateWeekDateTimeNotification) с нужным delay.
1
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
29.09.2014, 12:26  [ТС] #7
Спасибо!
0
29.09.2014, 12:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2014, 12:26

Компьютер ночью выходит из спящего режима
Всем день добрый. Уже достала меня эта проблема. Сам по себе ПК выходит из спящего режима ночью,...

Компьютер включается сам по себе,ночью
Добрый день,или вечер всем обитателям данного форума. Возможно модераторы посчитают,что я не туда...

Изобретательская задача о снятых ночью колесах
Привет всем форумчанам! =) Волею судеб приходится оставлять авто ночевать на улице под окнами. И...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru