title: How to set Scheduled notification in android
body: <p>I want my app to throw a notification after 10 seconds even if the app is not running. I have made use of the <code>AlarmManager</code> but unable to get the notification at the desired time.
  I am able to get a toast at that time but not the notification. Any help will be deeply appreciated. </p>
  
  <p>This is my AlarmManager class:</p>
  
  <pre><code>public class AlarmManagerActivity extends Activity {
  
  private AlarmManagerBroadcastReceiver alarm;
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_alarm_manager);
      alarm = new AlarmManagerBroadcastReceiver();
      onetimeTimer();
  
  
  }
  
  @Override
  protected void onStart() {
      super.onStart();
  }
  
  
  public void notifyN(){
  
      Intent intent = new Intent(this, NotificationReceiverActivity.class);
      PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
  
      // Build notification
      // Actions are just fake
      Notification noti = new Notification.Builder(this)
              .setContentTitle("This is a sample notification")
              .setContentText("Subject")
              .setSmallIcon(R.drawable.ic_launcher)
              .setContentIntent(pIntent)
              .addAction(R.drawable.ic_action_search, "Call", pIntent)
              .addAction(R.drawable.ic_action_search, "More", pIntent)
              .addAction(R.drawable.ic_action_search, "And more", pIntent).build();
  
  
      NotificationManager notificationManager = 
        (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  
      // Hide the notification after its selected
      noti.flags |= Notification.FLAG_AUTO_CANCEL;
  
      notificationManager.notify(0, noti);
  }
  
  
  public void onetimeTimer(){
      Context context = this.getApplicationContext();
      if(alarm != null){
          alarm.setOnetimeTimer(context);
          notifyN();
  
      }else{
          Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
      }
  }
  
  }
  </code></pre>
  
  <p>And this is the AlarmManagerBroadcastReceiver:</p>
  
  <pre><code>public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
  
  final public static String ONE_TIME = "onetime";
  
  @Override
  public void onReceive(Context context, Intent intent) {
      PowerManager pm = (PowerManager) context
              .getSystemService(Context.POWER_SERVICE);
      PowerManager.WakeLock wl = pm.newWakeLock(
              PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
      // Acquire the lock
      wl.acquire();
  
      // You can do the processing here update the widget/remote views.
      Bundle extras = intent.getExtras();
      StringBuilder msgStr = new StringBuilder();
  
      if (extras != null &amp;&amp; extras.getBoolean(ONE_TIME, Boolean.FALSE)) {
          msgStr.append("One time Timer : ");
      }
      Format formatter = new SimpleDateFormat("hh:mm:ss a");
      msgStr.append("abcs stop the instance" + formatter.format(new Date()));
  
      Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
  
      // Release the lock
      wl.release();
  
  }
  
  public void setOnetimeTimer(Context context) {
      AlarmManager am = (AlarmManager) context
              .getSystemService(Context.ALARM_SERVICE);
      Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
      intent.putExtra(ONE_TIME, Boolean.TRUE);
      PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
      am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, pi);
  
  }
  }
  </code></pre>