Как проверить, запущен ли 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:

На :

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
}

На :

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;
}
→ Ссылка