title: AlarmManager and Notifications in Android 8.0(Oreo)
body: <p>In my app i have a alarm that is repeting every thursday, i am using AlarmManger, everything is working fine in all previous versions of android, but now with android 8.0(oreo), the alarm Isn't firing, below is the classes that i use to set my alarm.
  From what i searched i need to set the alarm explicitly, but I 
  dont understand how.</p>
  
  <p>MainActivity:</p>
  
  <pre><code>try
          {
              Intent alarmIntent = new Intent(this, typeof(AlarmReceiver));
              PendingIntent pending = PendingIntent.GetBroadcast(this, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
              AlarmManager alarmManager = GetSystemService(AlarmService).JavaCast&lt;AlarmManager&gt;();
  
              if (Settings.AccessAlarm == 0)
              {
                  alarmManager.SetRepeating(AlarmType.RtcWakeup, BootReceiver.FirstReminder(), BootReceiver.reminderInterval, pending);
                  PendingIntent pendingIntent = PendingIntent.GetBroadcast(this, 0, alarmIntent, 0);
                  Settings.AccessAlarm = 1;
              }
          }
          catch (Exception e)
          {
              Settings.AccessAlarm = 0;
          }
  </code></pre>
  
  <p>Bootreceiver.cs:</p>
  
  <pre><code>[BroadcastReceiver]
  [IntentFilter(new[] { Intent.ActionBootCompleted })]
  public class BootReceiver : BroadcastReceiver
  {
      //the interval currently every one minute
      //to set it to dayly change the value to 24 * 60 * 60 * 1000
      public static long reminderInterval = AlarmManager.IntervalDay * 7;
      //public static long reminderInterval = 3 * 1000;
  
      public static long FirstReminder()
      {
          System.Random rnd = new System.Random();
  
          int minutenumber = rnd.Next(20, 40);
  
          Java.Util.Calendar calendar = Java.Util.Calendar.Instance;
          calendar.Set(Java.Util.CalendarField.DayOfWeek, Calendar.Thursday);
          calendar.Set(Java.Util.CalendarField.HourOfDay, 10);
          calendar.Set(Java.Util.CalendarField.Minute, minutenumber);
          return calendar.TimeInMillis;
  
      }
  
      public override void OnReceive(Context context, Intent intent)
      {
          try
          {
              Console.WriteLine("BootReceiver: OnReceive");
              var alarmIntent = new Intent(context, typeof(AlarmReceiver));
              var pending = PendingIntent.GetBroadcast(context, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
              AlarmManager alarmManager = (AlarmManager)context.GetSystemService(Context.AlarmService);
              alarmManager.SetRepeating(AlarmType.RtcWakeup, FirstReminder(), reminderInterval, pending);
  
              PendingIntent pendingIntent = PendingIntent.GetBroadcast(context, 0, alarmIntent, 0);
              Settings.AccessAlarm = 1;
          }
          catch (Exception e)
          {
              Settings.AccessAlarm = 0;
          }
  
      }
  }
  </code></pre>
  
  <p>AlarmReceiver:</p>
  
  <pre><code>[BroadcastReceiver]
  public class AlarmReceiver : BroadcastReceiver
  {
      private int z = 0;
      private int i;
  
  
      public override void OnReceive(Context context, Intent intent)
      {
          try
          {
                  Settings.AlarmNotification = 1;
  
                  if (System.DateTime.Now.DayOfWeek == DayOfWeek.Thursday)
                  {
                      Settings.AlarmCount =0;
                  }
  
                  var title = "Test";
                  var message = "Something";
  
                  Intent backIntent = new Intent(context, typeof(MainActivity));
                  backIntent.SetFlags(ActivityFlags.NewTask);
  
  
  
                  var resultIntent = new Intent(context, typeof(MainActivity));
  
  
  
                  PendingIntent pending = PendingIntent.GetActivities(context, 0,
                      new Intent[] { backIntent, resultIntent },
                      PendingIntentFlags.OneShot);
  
                  var builder =
                      new Notification.Builder(context)
                          .SetContentTitle(title)
                          .SetContentText(message)
                          .SetAutoCancel(true)
                          .SetSmallIcon(Resource.Drawable.icon)
                          .SetDefaults(NotificationDefaults.All);
  
                  builder.SetContentIntent(pending);
                  var notification = builder.Build();
                  var manager = NotificationManager.FromContext(context);
                  manager.Notify(1331, notification);
  
          }
          catch (Exception)
          {
  
          }
      }
  }
  </code></pre>