content: package com.alimuzaffar.ramadanalarm.scheduler;
  
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
  
  import com.alimuzaffar.ramadanalarm.util.AppSettings;
  
  /**
   * This BroadcastReceiver automatically (re)starts the alarm when the device is
   * rebooted. This receiver is set to be disabled (android:enabled="false") in the
   * application's manifest file. When the user sets the alarm, the receiver is enabled.
   * When the user cancels the alarm, the receiver is disabled, so that rebooting the
   * device will not trigger this receiver.
   */
  // BEGIN_INCLUDE(autostart)
  public class SalaatBootReceiver extends BroadcastReceiver {
    SalaatAlarmReceiver salaatAlarm = new SalaatAlarmReceiver();
    RamadanAlarmReceiver ramadanAlarm = new RamadanAlarmReceiver();
  
    @Override
    public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      if (action.equals("android.intent.action.BOOT_COMPLETED")) {
        if (AppSettings.getInstance(context).isAlarmSetFor(0)) {
          salaatAlarm.setAlarm(context);
        }
  
        if (AppSettings.getInstance(context).getBoolean(AppSettings.Key.IS_RAMADAN)) {
          ramadanAlarm.setAlarm(context);
        }
      } else if (action.equals("android.intent.action.TIMEZONE_CHANGED") ||
          action.equals("android.intent.action.TIME_SET") ||
          action.equals("android.intent.action.MY_PACKAGE_REPLACED")) {
        // Our location could have changed, which means time calculations may be different
        // now so cancel the alarm and set it again.
        if (AppSettings.getInstance(context).isAlarmSetFor(0)) {
          salaatAlarm.cancelAlarm(context);
          salaatAlarm.setAlarm(context);
        }
  
        if (AppSettings.getInstance(context).getBoolean(AppSettings.Key.IS_RAMADAN)) {
          ramadanAlarm.cancelAlarm(context);
          ramadanAlarm.setAlarm(context);
        }
      }
    }
  }
  //END_INCLUDE(autostart)
  