Как проверить, запущен ли Alarm Manager
Когда мое приложение запускается в onCreate() я запускаю метод:
private void startNotifyService() {
Calendar timeNotification = Calendar.getInstance();
timeNotification.set(Calendar.HOUR_OF_DAY, 12);
timeNotification.set(Calendar.MINUTE, 0);
timeNotification.set(Calendar.SECOND, 0);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, NotificationReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
// если заданное время меньше текущего, то к нему прибовляется один день
if (timeNotification.before(Calendar.getInstance())) {
timeNotification.add(Calendar.DATE, 1);
}
if (am != null)
am.setRepeating(AlarmManager.RTC_WAKEUP, timeNotification.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Все исправно работает и каждый день в 12 часов срабатывает AlarmManager.
Подскажите, как сделать проверку, установлен ли уже Alarm?
Или есть другой способ, что бы ни устанавливать его каждый раз при запуске приложения. Заранее спасибо.
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
Вот так можно проверить, установлен ли AlarmManager:
На kotlin:
fun isAlarmSet(context: Context): Boolean {
val intent = Intent(context, NotificationReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE)
return pendingIntent != null
}
На java:
public static boolean isAlarmSet(Context context) {
Intent intent = new Intent(context, NotificationReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE);
return pendingIntent != null;
}