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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
#1

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

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

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

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

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

В listView в item отображать картинки одинакового размера Android
Eclipse перестал отображать файлы Strings разных языков одновременно Android
CalendarView - отображать Месяц/Неделя/День Android
Как создать такой ViewPager или Как вообще такое создать? Android
При вводе слов из Википедии брать значение этого слова и отображать в TextView Android
Отображать в textView текст из файла txt Android
Как не отображать в GridView пустоту между ячейками? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
29.09.2014, 11:31     Создать нотификацию, и не отображать ее ночью #2
kpoxaa, задача в том, чтобы оно не запикало ночью вообще, или чтобы была отложена до утра?
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
29.09.2014, 11:38  [ТС]     Создать нотификацию, и не отображать ее ночью #3
Я думаю оба варианта.

При создании нотификации я создаю переменную отвечающую за время старта таким образом : беру текущее время и прибалвяю к нему 7 дней. Это получается допустим - 28.09.2014 14-00. Но если получится 07-00 я могу доматать время до 12-00. Тут вроде бы все просто. Может быть этот вариант мне и подойдет?
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
29.09.2014, 11:39     Создать нотификацию, и не отображать ее ночью #4
kpoxaa, как Вы запускаете её через 7 дней? Это AlarmManager? Где Вы её храните? БД?
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
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);
    }
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
29.09.2014, 11:57     Создать нотификацию, и не отображать ее ночью #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2014, 12:26     Создать нотификацию, и не отображать ее ночью
Еще ссылки по теме:

Не отображать SplashScreen при смене ориентации экрана Android
Android Отображать рекламу в своем приложении от admod

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

Или воспользуйтесь поиском по форуму:
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
29.09.2014, 12:26  [ТС]     Создать нотификацию, и не отображать ее ночью #7
Спасибо!
Yandex
Объявления
29.09.2014, 12:26     Создать нотификацию, и не отображать ее ночью
Ответ Создать тему
Опции темы

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