Установите будильник после перезагрузки телефона

У меня есть маленький вопрос. Я устанавливаю свои уведомления в определенное время, используя AlarmManager. Время установки уведомлений хранится в базе данных SQLLite. Все они работают отлично, за исключением момента, когда я перезагружаю телефон. alarmManager теряет их повторения, конечно.

Я хотел бы спросить, что является лучшим решением в этой ситуации? У меня настроен AlarmManager в MainActivity, и я установил свое уведомление в BroadcastReceiver, как вы можете видеть в коде ниже:

Вот как я называю это из MainActivity:

        Intent intent = new Intent(context, MyReceiver.class);
        intent.putExtra(EXTRA_TITLE, title);
        intent.putExtra(EXTRA_COUNT, count);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, count, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), WEEK_LENGTH_MS, pendingIntent);

А вот и метод приемника вещания onReceive

  public void onReceive(Context context, Intent intent)
    {
        nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        CharSequence from = context.getString(R.string.app_name);
        CharSequence message = intent.getStringExtra(DayActivity.EXTRA_TITLE);
        Intent intentNotification = new Intent(context,DayActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context, intent.getIntExtra(DayActivity.EXTRA_COUNT,0), intentNotification, 0);
        Notification notif = new Notification(R.drawable.notification_logo,context.getString(R.string.app_name), System.currentTimeMillis());
        notif.setLatestEventInfo(context, from, message, contentIntent);
        notif.defaults |= Notification.DEFAULT_LIGHTS;
        notif.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
        nm.notify(intent.getIntExtra(DayActivity.EXTRA_COUNT,0), notif);

    }

Я объявляю BroadcastReceiver для события BOOT_COMPLETED, но он всегда вызывает просто пустое уведомление во время запуска телефона и никогда больше.

1 ответ

Решение

Я хотел бы спросить, что является лучшим решением в этой ситуации?

Зарегистрировать BOOT_COMPLETEDBroadcastReceiver звонить setRepeating() на AlarmManager восстановить ваши графики.

Я объявляю BroadcastReceiver для события BOOT_COMPLETED, но он всегда вызывает просто пустое уведомление во время запуска телефона и никогда больше.

Цель BOOT_COMPLETEDBroadcastReceiver должно быть перенести ваши тревоги. Вы можете рассмотреть возможность использования отдельного BroadcastReceiver чем тот, который вы используете для самих событий тревоги.

Другие вопросы по тегам