Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
1

Выводить оповещения в заданное время

29.12.2015, 11:19. Просмотров 669. Ответов 13
Метки нет (Все метки)

Здравствуйте.
Нужно выводить оповещения в заданное время, создаю сервис через alarmManager, однако, если добавить несколько оповещений, срабатывает только последнее. Также, если выключить устройство, оповещение не срабатывает.
Подскажите, пожалуйста.
Java
1
2
3
4
final AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent myIntent = new Intent(this, MyService.class);
final PendingIntent pendingIntent = PendingIntent.getService(Information.this, 0, myIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2015, 11:19
Ответы с готовыми решениями:

Ждать ответ заданное время
Как реализовать такое: Я отправляю на сервер TCP данные и затем в течение...

Уведомления в заданное время без Alarm
Пытаюсь вывести уведомление в заданное время не используя AlarmManager. Т.к....

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

Переход между Activity через заданное время. Как лучше?
Добрый день. Вопрос от новичка. Какую задачу хотел решить: появляется...

Локальная система оповещения пользователя
Коллеги, доброго времени суток! Необходим совет по разработке модуля,...

13
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
29.12.2015, 11:43 2
http://startandroid.ru/ru/uroki/vse-...rmmanager.html

Добавлено через 44 секунды
+ broadcast чтобы запускать AlarmManager после загрузки устройства.
0
DarkVortex
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
29.12.2015, 15:45 3
Прилежение может иметь только 1 alarm manager.
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
29.12.2015, 18:11  [ТС] 4
requestCode нужно было указать, спасибо. Только теперь появляются оба оповещения, но в статус баре заменяют друг друга, то есть показывается сначала одно, потом заменяется следующим почему-то. По поводу broadcast'а не понял, там флаг указать нужно? Или явно писать процедуру, которая выполнится после загрузки?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
30.12.2015, 09:07 5
Цитата Сообщение от ExFau$t Посмотреть сообщение
По поводу broadcast'а не понял
https://www.google.ru/search?q=site:...ager broadcast
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
31.12.2015, 12:08  [ТС] 6
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MyService extends BroadcastReceiver {
 
 
 
    @Override
    public void onReceive(Context context, Intent intent) {
        NotificationUtils n = NotificationUtils.getInstance(context);
        n.createInfoNotification("Cобытие...");
    }
 
    public void SetAlarm(Context context, Calendar calendar, PendingIntent pendingIntent) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
    }
 
    public void CancelAlarm(Context context, PendingIntent pendingIntent){
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
    }
}
Создаю сервис так, оповещения работают, после перезагрузки - нет, если в onReceive дописать метод создания alarm'a, то он срабатывает мгновенно.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
31.12.2015, 12:57 7
ExFau$t, это нужен еще один BroadcastReceiver, который будет ловить сообщения о запуске системы.
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
31.12.2015, 13:09  [ТС] 8
Spelcrawler, так это и не пойму, что нужно сделать, чтобы ловить эти сообщения и при запуске что-то сделать? В том виде, что есть он по идее должен создать оповещение сразу же после запуска, без аларма. В манифесте уже все перебрал:
XML
1
2
3
4
5
6
<receiver android:name=".MyService"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
31.12.2015, 13:17 9
ExFau$t, должно быть два ресивера: один ловит сообщение от аларм менеджера, другой сообщение о загрузке (то что выше у вас в манифесте). Первый при получении сообщения показывает уведомление, второй запускает аларм менеджер.
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
31.12.2015, 13:18  [ТС] 10
Spelcrawler, оба описать в манифесте и тот, что вызывает аларм никак не вызывается в активностях?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
31.12.2015, 13:23 11
ExFau$t, да, именно так.
1
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
31.12.2015, 14:13  [ТС] 12
Spelcrawler, а в intent этого ресивера с алармом можно экстра данные передать?
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
08.01.2016, 12:42  [ТС] 13
Не работает все равно после перезагрузки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class AlarmReceiver extends BroadcastReceiver {
    SharedPreferences sp;
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"dg",Toast.LENGTH_LONG).show();
        sp = context.getSharedPreferences("my_settings", Context.MODE_PRIVATE);
        for (int i=0;i<sp.getInt("NomOfNotif", 0);i++) {
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, sp.getInt("idnotif" + Integer.toString(i), 0), intent, 0);
            final MyService alarm = new MyService();
            alarm.SetAlarm(context, sp.getLong("timenotif" + Integer.toString(i), 0), pendingIntent);
        }
    }
}
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
20.01.2016, 12:06  [ТС] 14
Для работы ресивера есть требования к версии ОС?
0
20.01.2016, 12:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2016, 12:06

Логика для SMS оповещения
Помогите кое что прояснить. Допустим хочу создать программу которая как только...

Срабатывание оповещения в определенное время
Доброго времени суток. Не могли бы вы подсказать, как сделать так, чтобы...

Выводить текущее время в определенные позиции консоли во время работы
Портирую консольное приложение. Есть код, который работал после компиляции в...


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

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

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