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

Создать нотификацию, и не отображать ее ночью - Программирование Android

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

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

http://www.cyberforum.ru/c-beginners/thread788496.html
Может быть есть какие-то готовые решения?

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

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

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

Как в 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
Привет! Вот еще темы с решениями:

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

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

Не работает клавиатура с мышкой после простоя ПК ночью
Добрый день! не знаю, связано это с windows 10 или железом) но проблема такая:...

Win 10 обновился ночью и стер часть данных
Всем привет. У меня организовалась проблема. Появился ассистент обновления...


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

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

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