title: Show the Android Statusbar Notification in Particular date,
body: <p>Help me to resolve this.</p>
  
  <p>Iam having Some Date in Local Database,
  Every day I Want to Check Database Date and Current Date in particular time,If database date is matching with current date Show notification in Statusbar </p>
  
  <p>I have added my code, </p>
  
  <p>signin-->MyNotificationService-->Scheduleclient-->ScheduleServcie-->AlarmTask-->NotifyService Flow, 
  Here Once service is Started ,Database data is retrieving But condition Is not Checking every day.
   I Want to check local database Saved date &amp; current date ,If Both are Same Start the notification.</p>
  
  <p><a href="http://blog.blundell-apps.com/notification-for-a-user-chosen-time/" rel="nofollow">This link i Have used for Reference</a></p>
  
  <p>Sign_in.Java</p>
  
  <pre><code>import android.widget.Button;
  import android.widget.EditText;
  import android.widget.ProgressBar;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class sign_in extends Activity implements OnClickListener {
  
      TextView Signin, ForgotPasword;
      private EditText EMAIL, PASSWORD;
      private Button login;
  
      // for Shared preferences
      public static String email = "";
      public static String password = "";
      public static String storedPassword = "";
  
  
      // This is a handle so that we can call methods on our service
      private ScheduleClient scheduleClient;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          requestWindowFeature(Window.FEATURE_NO_TITLE);
  
          setContentView(R.layout.sign_in);
  
          // Session Manager
          session = new SessionManagerFor_Signin(getApplicationContext());
  
  
          DB = new DataBaseConnector_forsignUp(this);
          DB = DB.open();
  
          Signin = (TextView) findViewById(R.id.textView1);
          login = (Button) findViewById(R.id.button1);
          ForgotPasword = (TextView) findViewById(R.id.textView4);
          EMAIL = (EditText) findViewById(R.id.editText1);
          PASSWORD = (EditText) findViewById(R.id.editText2);
  
          login.setOnClickListener(this);
  
  
          //new Service bind for Notification
                  // Create a new service client and bind our activity to this service
                  scheduleClient = new ScheduleClient(this);
                  scheduleClient.doBindService();
  
      }
  
      @Override
      public void onClick(View v) {
  
          switch (v.getId()) {
  
          case R.id.button1:
  
  
              email = EMAIL.getText().toString();
              password = PASSWORD.getText().toString();
  
              session.createLoginSession(email, password);
  
              if (email.equals("") || password.equals("")) {
                  // user didn't entered user name or password
                  // Show alert asking him to enter the details
                  alert.showAlertDialog(sign_in.this, "Login failed...","Please Enter Email and Password", false);
  
              } else {
  
                  // fetch the Password form database for respective Email
                  storedPassword = DB.getSinlgeEntry(email);
                  if (password.equals(storedPassword)) {
  
                      Toast.makeText(sign_in.this, "Login Successfull",Toast.LENGTH_LONG).show();
                      Intent intent = new Intent(sign_in.this, Page1.class);
  
                      startActivity(intent);
                      finish();
  
  
                      //Calling the Notication for Notification Process
                      Intent myIntent1 = new Intent(sign_in.this,MyNotificationService.class);
                      pendingintent2 = PendingIntent.getService(sign_in.this, 0,myIntent1, 0);
                      AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
                      Calendar calendar1 = Calendar.getInstance();
                      calendar1.setTimeInMillis(System.currentTimeMillis());
                      calendar1.add(Calendar.SECOND, 40);
                      alarmManager1.set(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(), pendingintent2);
  
                      long time24h = 24*60*60*1000;
  
                      alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(), time24h,pendingintent2);
  
                      // get Internet status
                      isInternetPresent = cd1.isConnectingToInternet();
  
                  }
  
  
          }
      }
  
      @Override
      protected void onDestroy() {
          super.onDestroy();
          // Close The Database
          DB.close();
      }
  
  
  
      //Stop the Notification
       @Override
          protected void onStop() {
              // When our activity is stopped ensure we also stop the connection to the service
              // this stops us leaking our activity into the system *bad*
              if(scheduleClient != null)
                  scheduleClient.doUnbindService();
              super.onStop();
          }
  }
  </code></pre>
  
  <p>MyNotificationService .Java</p>
  
  <pre><code>package com.example;
  
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.Calendar;
  import java.util.Date;
  import java.util.List;
  
  import com.example.database.DatabaseConnector_forProduct;
  import com.example.service.ScheduleClient;
  import com.example.web.ProductPojo;
  
  import android.app.Service;
  import android.content.Intent;
  import android.os.IBinder;
  import android.util.Log;
  
  
  public class MyNotificationService extends Service
  
  {
  
      // This is a handle so that we can call methods on our service
      private ScheduleClient scheduleClient;
      DatabaseConnector_forProduct helper=new DatabaseConnector_forProduct(this);
      public String ExpiryDate;
      private String TAG1 = "Notify..!!";
      @Override
      public void onCreate() 
      {
          Log.i(TAG1, "Notification Created");
          //new Service bind for Notification
                  // Create a new service client and bind our activity to this service
                  scheduleClient = new ScheduleClient(this);
                  scheduleClient.doBindService();
  
      }
      @Override
      public IBinder onBind(Intent intent) 
      {
      //Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show();
      return null;
      }
      @Override
      public void onDestroy() 
      {
      super.onDestroy();
  
  
  
      }
  
      @SuppressWarnings("deprecation")
      @Override
      public void onStart(Intent intent, int startId) 
      {
      super.onStart(intent, startId);
  
       try 
       {
  
           List&lt;ProductPojo&gt; val1 = helper.getAllvalues();
             //    "Reading all data..from Db ", Toast.LENGTH_LONG).show();
  
                for (int i=0;i&lt;val1.size();i++) 
                {
  
                    ExpiryDate = val1.get(i).getExpiry_Date();
  
                  //for Showing List view  Data
                  String dt = ExpiryDate;
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                  Calendar cd = Calendar.getInstance();
                  try
                  {
                      cd.setTime(sdf.parse(dt));
  
                  } 
                  catch (ParseException e) 
                  {
                      e.printStackTrace();
                  }
  
  
                  SimpleDateFormat sdfr = new SimpleDateFormat("yyyy-MM-dd");
                  Calendar cal = Calendar.getInstance();
                  Date Warranty_Expired_Date = sdfr.parse(sdfr.format(cd.getTime()));
                  String dateExpiry=Warranty_Expired_Date.toString();
                  Date Current_Date = sdfr.parse(sdfr.format(cal.getTime()));
                  Log.i(TAG1,dateExpiry+"=="+Current_Date);
  
           if(Warranty_Expired_Date.equals(Current_Date))
           {
              Calendar cd1 = Calendar.getInstance();
              /*int DaySpecific = cd1.get(Calendar.DAY_OF_MONTH);
              int month_Specfic = cd1.get(Calendar.MONTH);
              int year_Specific = cd1.get(Calendar.YEAR);
              cd1.set(year_Specific, month_Specfic, DaySpecific);
              cd1.set(Calendar.HOUR_OF_DAY, 5);//24 Hour Format
              cd1.set(Calendar.MINUTE, 30);
              cd1.set(Calendar.SECOND, 0);*/
          // Ask our service to set an alarm for that date, this activity talks to the client that talks to the service
              scheduleClient.setAlarmForNotification(cd1);
           }
           else
           {
  
           }
  
   }
  
       } 
       catch (Exception e) 
       {
           e.printStackTrace();
           Log.i(TAG1,"Exception Caught");
  
       }
  
  
  
      }
  
      @Override
      public boolean onUnbind(Intent intent)
      {
  
      return super.onUnbind(intent);
  
      }
  
  
  
  }
  </code></pre>
  
  <p>AlarmTask.Java</p>
  
  <pre><code>package com.example.service.task;
  
  import java.util.Calendar;
  
  import android.app.AlarmManager;
  import android.app.PendingIntent;
  import android.content.Context;
  import android.content.Intent;
  
  import com.example.service.NotifyService;
  
  
  public class AlarmTask implements Runnable{
      // The date selected for the alarm
      private final Calendar date;
      // The android system alarm manager
      private final AlarmManager am;
      // Your context to retrieve the alarm manager from
      private final Context context;
  
      public AlarmTask(Context context, Calendar date) {
          this.context = context;
          this.am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
          this.date = date;
      }
  
      @Override
      public void run() {
          // Request to start are service when the alarm date is upon us
          // We don't start an activity as we just want to pop up a notification into the system bar not a full activity
          Intent intent = new Intent(context, NotifyService.class);
          intent.putExtra(NotifyService.INTENT_NOTIFY, true);
          PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
  
          // Sets an alarm - note this alarm will be lost if the phone is turned off and on again
          am.set(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), pendingIntent);
  
  
  
          /*// setRepeating() lets you specify a precise custom interval--in this case,
          // 20 minutes.
          alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                  1000 * 60 * 20, alarmIntent);*/
  
  
      }
  }
  </code></pre>
  
  <p>NotifyService.Java</p>
  
  <pre><code>package com.example.service;
  
  import com.example.Page1;
  
  import android.R;
  import android.app.Notification;
  import android.app.NotificationManager;
  import android.app.PendingIntent;
  import android.app.Service;
  import android.content.Intent;
  import android.os.Binder;
  import android.os.IBinder;
  import android.util.Log;
  
  public class NotifyService extends Service {
  
      /**
       * Class for clients to access
       */
      public class ServiceBinder extends Binder {
          NotifyService getService() {
              return NotifyService.this;
          }
      }
  
      // Unique id to identify the notification.
      private static final int NOTIFICATION = 123;
      // Name of an intent extra we can use to identify if this service was started to create a notification  
      public static final String INTENT_NOTIFY = "com.blundell.tut.service.INTENT_NOTIFY";
      // The system notification manager
      private NotificationManager mNM;
  
      @Override
      public void onCreate() {
          Log.i("NotifyService", "onCreate()");
          mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
      }
  
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          Log.i("LocalService", "Received start id " + startId + ": " + intent);
  
          // If this service was started by out AlarmTask intent then we want to show our notification
          if(intent.getBooleanExtra(INTENT_NOTIFY, false))
              showNotification();
  
          // We don't care if this service is stopped as we have already delivered our notification
          return START_NOT_STICKY;
      }
  
      @Override
      public IBinder onBind(Intent intent) {
          return mBinder;
      }
  
      // This is the object that receives interactions from clients
      private final IBinder mBinder = new ServiceBinder();
  
      /**
       * Creates a notification and shows it in the OS drag-down status bar
       */
      @SuppressWarnings("deprecation")
      private void showNotification() {
          // This is the 'title' of the notification
          CharSequence title = " Alert...!";
          // This is the icon to use on the notification
          int icon = R.drawable.ic_dialog_alert;
          // This is the scrolling text of the notification
          CharSequence text = "Alert Today..!";       
          // What time to show on the notification
          long time = System.currentTimeMillis();
  
          Notification notification = new Notification(icon, text, time);
  
          // The PendingIntent to launch our activity if the user selects this notification
          PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, Page1.class), 0);
  
          // Set the info for the views that show in the notification panel.
          notification.setLatestEventInfo(this, title, text, contentIntent);
  
          // Clear the notification when it is pressed
          notification.flags |= Notification.FLAG_AUTO_CANCEL;
  
          // Send the notification to the system.
          mNM.notify(NOTIFICATION, notification);
  
          // Stop the service when we are finished
          stopSelf();
      }
  }
  </code></pre>
  
  <p>ScheduleClient.java</p>
  
  <pre><code>package com.example.service;
  
  import java.util.Calendar;
  
  import android.content.ComponentName;
  import android.content.Context;
  import android.content.Intent;
  import android.content.ServiceConnection;
  import android.os.IBinder;
  
  
  public class ScheduleClient {
  
      // The hook into our service
      private  ScheduleService mBoundService;
      // The context to start the service in
      private Context mContext;
      // A flag if we are connected to the service or not
      private boolean mIsBound;
  
      public ScheduleClient(Context context) {
          mContext = context;
      }
  
      /**
       * Call this to connect your activity to your service
       */
      public void doBindService() {
          // Establish a connection with our service
          mContext.bindService(new Intent(mContext, ScheduleService.class), mConnection, Context.BIND_AUTO_CREATE);
          mIsBound = true;
      }
  
  
      private ServiceConnection mConnection = new ServiceConnection() {
          public void onServiceConnected(ComponentName className, IBinder service) {
              // This is called when the connection with our service has been established, 
              // giving us the service object we can use to interact with our service.
              mBoundService = ((ScheduleService.ServiceBinder) service).getService();
          }
  
          public void onServiceDisconnected(ComponentName className) {
              mBoundService = null;
          }
      };
  
      /**
       * Tell our service to set an alarm for the given date
       * @param c a date to set the notification for
       */
      public void setAlarmForNotification(Calendar c){
          mBoundService.setAlarm(c);
      }
  
      /**
       * When you have finished with the service call this method to stop it 
       * releasing your connection and resources
       */
      public void doUnbindService() {
          if (mIsBound) {
              // Detach our existing connection.
              mContext.unbindService(mConnection);
              mIsBound = false;
          }
      }
  }
  </code></pre>
  
  <p>ScheduleService.java</p>
  
  <pre><code>package com.example.service;
  
  import java.util.Calendar;
  
  import android.app.Service;
  import android.content.Intent;
  import android.os.Binder;
  import android.os.IBinder;
  import android.util.Log;
  
  import com.example.service.task.AlarmTask;
  
  public class ScheduleService extends Service {
  
      /**
       * Class for clients to access
       */
      public class ServiceBinder extends Binder {
          ScheduleService getService() {
              return ScheduleService.this;
          }
      }
  
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          Log.i("ScheduleService", "Received start id " + startId + ": " + intent);
  
          // We want this service to continue running until it is explicitly stopped, so return sticky.
          return START_STICKY;
      }
  
      @Override
      public IBinder onBind(Intent intent) {
          return mBinder;
      }
  
      // This is the object that receives interactions from clients. See
      private final IBinder mBinder = new ServiceBinder();
  
      /**
       * Show an alarm for a certain date when the alarm is called it will pop up a notification
       */
      public void setAlarm(Calendar c) {
          // This starts a new thread to set the alarm
          // You want to push off your tasks onto a new thread to free up the UI to carry on responding
          new AlarmTask(this, c).run();
      }
  }
  </code></pre>