title: Xamarin AlarmManager Android
body: <p>I've created a quick xamarin android project. Eventually I will want to take the learning below and apply it to a xamarin forms project that is shared between android and ios. For now I'm just focusing on the Android side of things.</p>
  
  <p>I've been trying to learn how to schedule a local notification to appear at some time in the future. Made a quick throw away application, below is the AlarmReceiver Class I've written, as well as the MainActivity.cs below.</p>
  
  <pre><code>class AlarmReceiver : BroadcastReceiver
  {
      public override void OnReceive(Context context, Intent intent)
      {
          var message = intent.GetStringExtra("message");
          var title = intent.GetStringExtra("title");
  
          var notIntent = new Intent(context, typeof(MainActivity));
          var contentIntent = PendingIntent.GetActivity(context, 0, notIntent, PendingIntentFlags.CancelCurrent);
          var manager = NotificationManager.FromContext(context);
  
          //Generate a notification with just short text and small icon
          var builder = new Notification.Builder(context)
                          .SetContentIntent(contentIntent)
                          .SetContentTitle(title)
                          .SetContentText(message)
                          .SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis())
                          .SetAutoCancel(true);
  
          var notification = builder.Build();
          manager.Notify(0, notification);
      }
  }
  
  public class MainActivity : Activity
  {
      // Unique ID for our notification: 
      private static readonly int ButtonClickNotificationId = 1000;
  
      // Number of times the button is tapped (starts with first tap):
      private int count = 1;
  
      protected override void OnCreate(Bundle bundle)
      {
          base.OnCreate(bundle);
          SetContentView(Resource.Layout.Main);
  
          // Display the "Hello World, Click Me!" button and register its event handler:
          Button button = FindViewById&lt;Button&gt;(Resource.Id.MyButton);
          button.Click += ButtonOnClick;
      }
  
      // Handler for button click events.
      private void ButtonOnClick(object sender, EventArgs eventArgs)
      {
          Intent alarmIntent = new Intent(Application.Context, typeof(AlarmReceiver));
          alarmIntent.PutExtra("message", "This is my test message!");
          alarmIntent.PutExtra("title", "This is my test title!");
  
          PendingIntent pendingIntent = PendingIntent.GetBroadcast(Application.Context, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
          AlarmManager alarmManager = (AlarmManager)Application.Context.GetSystemService(Context.AlarmService);            
          alarmManager.Set(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + 1 * 1000, pendingIntent);           
      }
  }
  </code></pre>
  
  <p>When I step through and debug this, it appears that my OnReceive method is not being called. </p>
  
  <p>I was following this article as I'm having a really tough time researching how to do this correctly via google searches. Here: <a href="http://nnish.com/2014/12/16/scheduled-notifications-in-android-using-alarm-manager/" rel="noreferrer">Scheduled Notifications</a></p>
  
  <p>If anyone could share some wisdom, would greatly appreciate it.</p>