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

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

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

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

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

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

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

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

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

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

Яндекс и Гугл ночью
Который раз наблюдаю равенство переходов ночью с Гугла и Яндекса - по 38 процентов приблизительно....

6
YuraAAA
1582 / 1322 / 283
Регистрация: 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
1582 / 1322 / 283
Регистрация: 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
1582 / 1322 / 283
Регистрация: 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2014, 12:26

Вредно ли не спать ночью?
Всем привет) Чё то как-то не понимаю я, вот смотрите я ночью могу вообще чё угодно делать, спать...

разная выдача днем и ночью
Днем по крутому ВЧ я на 20-45, ночью на 5-6, замечаю уже третью ночь. что за фигня! Кто-нибудь...

Ночью сайт не будет работать.
Раз на раз не приходится, я тоже один домен забыл продлить не так давно, пять дней был отключен,...


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

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

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