In My application i have set the two alarm. On toogleButton on i am going to set it on with below code:
case R.id.toggleButtonTwoMonth:
myPrefs = this.getSharedPreferences("myPrefs",MODE_WORLD_WRITEABLE);
if (tButtonTwoMonth.isChecked()) {
Toast.makeText(getApplicationContext(), "Two months reminder is On", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", true); prefsEditor.commit();
//For Broadcast Alarm
Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
alarmManagerForTwoMonth1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManagerForTwoMonth2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntentOfTwoMonth2 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
// ===================== GST ALARM FOR THE TWO MONTHS ==========================
// for the GST 20 June 2011
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0);
alarmManagerForTwoMonth1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), pendingIntentOfTwoMonth1);
// for the GST 17 August 2011
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0);
alarmManagerForTwoMonth2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),pendingIntentOfTwoMonth2);
}
else {
Toast.makeText(getApplicationContext(), "Two months reminder is Off", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", false); prefsEditor.commit();
//alarmManagerForTwoMonth.cancel(pendingIntentOfTwoMonth);
}
break;
But i am not getting the amarm notification at that desire time and if the toggle is on. Now after time of alarm is passaway and if i doing toggle off and then on so i get the alarm.
So whats wrong with my Code ? Please help me for that.
EDITED:
With thia answer i have solve to set the alarm for multiple time: How can I setup multiple alarms in Android?
But i am wondering about how to get it handle. I mean how to handle that alarm on receiver with different message ?
My updated Code with the Multiple Alarm is below:
//For Broadcast Alarm
Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
// ===================== GST ALARM FOR THE TWO MONTHS ==========================
// for the GST 20 June 2011
alarmManagerForTwoMonth1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0);
alarmManagerForTwoMonth1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), pendingIntentOfTwoMonth1);
// for the GST 17 August 2011
alarmManagerForTwoMonth2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
pendingIntentOfTwoMonth2 = PendingIntent.getBroadcast(this, 1, in, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0);
alarmManagerForTwoMonth2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),pendingIntentOfTwoMonth2);
And the Code for the Receiver is like below:
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// My Notification Code
notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.app_icon;
CharSequence text = "Your tax amount due period";
CharSequence contentTitle = "Tax Calculator App";
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
System.out.println("the Date is: "+(cal.getTime().getDate())+" "+ (cal.getTime().getMonth())+" "+ (cal.get(Calendar.YEAR)));
if((cal.getTime().getDate()==18) && (cal.getTime().getMonth()==5) && (cal.get(Calendar.YEAR)==2011)){
contentText = "Your GST tax amount is due on 20 June 2011";
}
else if((cal.getTime().getDate()==17) && (cal.getTime().getMonth()==7) && (cal.get(Calendar.YEAR)==2011)){
contentText = "Your GST tax amount is due on 19th August, 2011";
}
else{
contentText = "Your GST tax amount is due on Falana Dhikna Date";
}
long when = System.currentTimeMillis();
intent = new Intent(context, NotificationViewer.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
notification = new Notification(icon,text,when);
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate; // To vibrate the Device
notification.ledARGB = Color.RED;
notification.ledOffMS = 300;
notification.ledOnMS = 300;
notification.defaults |= Notification.DEFAULT_LIGHTS;
//notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notificationManager.notify(NotificationConstants.NOTIFICATION_ID, notification);
}
Now how to handle that different alarm ?? Help me for this. Thanks.
Edited
Pleasee this code:
case R.id.toggleButtonTwoMonth:
myPrefs = this.getSharedPreferences("myPrefs",MODE_WORLD_WRITEABLE);
if (tButtonTwoMonth.isChecked()) {
Toast.makeText(getApplicationContext(), "Two months reminder is On", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", true); prefsEditor.commit();
//For Broadcast Alarm
//Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
// ===================== GST ALARM FOR THE TWO MONTHS ==========================
// for the GST 20 June 2011
AM_2M_GST_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in1 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in1.putExtra("MyMessage","Your GST tax is due on 20 June 2011");
PI_2M_GST_1 = PendingIntent.getBroadcast(this, 0, in1, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0);
AM_2M_GST_1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), PI_2M_GST_1);
// for the GST 19 August 2011
AM_2M_GST_2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in2 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in2.putExtra("MyMessage","Your GST tax is due on 19 August 2011");
PI_2M_GST_2 = PendingIntent.getBroadcast(this, 1, in2, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0);
AM_2M_GST_2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),PI_2M_GST_2);
// for the GST 19 October 2011
AM_2M_GST_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in3 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in3.putExtra("MyMessage","Your GST tax is due on 19 October 2011");
PI_2M_GST_3 = PendingIntent.getBroadcast(this, 2, in3, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_19_October_2011 = Calendar.getInstance();
calendar_GST_19_October_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_19_October_2011.set(2011, 9, 19,mHour, mMinute, 0);
AM_2M_GST_3.set(AlarmManager.RTC_WAKEUP, calendar_GST_19_October_2011.getTimeInMillis(),PI_2M_GST_3);
// for the GST 17 December 2011
AM_2M_GST_4 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in4 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in4.putExtra("MyMessage","Your GST tax is due on 17 December 2011");
PI_2M_GST_4 = PendingIntent.getBroadcast(this, 3, in4, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_17_December_2011 = Calendar.getInstance();
calendar_GST_17_December_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_December_2011.set(2011, 11, 17,mHour, mMinute, 0);
AM_2M_GST_4.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_December_2011.getTimeInMillis(),PI_2M_GST_4);
// for the GST 20 February 2012
AM_2M_GST_5 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in5 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in5.putExtra("MyMessage","Your GST tax is due on 18 February 2012");
PI_2M_GST_5 = PendingIntent.getBroadcast(this, 4, in5, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_18_February_2012 = Calendar.getInstance();
calendar_GST_18_February_2012.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_February_2012.set(2012, 1, 18,mHour, mMinute, 0);
AM_2M_GST_5.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_February_2012.getTimeInMillis(),PI_2M_GST_5);
// for the GST 27 April 2012
AM_2M_GST_6 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in6 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in6.putExtra("MyMessage","Your GST tax is due on 27 April 2012");
PI_2M_GST_6 = PendingIntent.getBroadcast(this, 5, in6, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_27_April_2012 = Calendar.getInstance();
calendar_GST_27_April_2012.setTimeInMillis(System.currentTimeMillis());
calendar_GST_27_April_2012.set(2012, 3, 27,mHour, mMinute, 0);
AM_2M_GST_6.set(AlarmManager.RTC_WAKEUP, calendar_GST_27_April_2012.getTimeInMillis(),PI_2M_GST_6);
// ===================== PROVISIONAL ALARM FOR THE TWO MONTHS ==========================
// for the PROVISIONAL 26 August 2011
AM_2M_PROVISIONAL_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in7 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in7.putExtra("MyMessage","Your PROVISIONAL tax is due on 26 August 2011");
PI_2M_PROVISIONAL_1 = PendingIntent.getBroadcast(this, 6, in7, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_PROVISIONAL_26_August_2011 = Calendar.getInstance();
calendar_PROVISIONAL_26_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_PROVISIONAL_26_August_2011.set(2011, 7, 26,mHour, mMinute, 0);
AM_2M_PROVISIONAL_1.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_26_August_2011.getTimeInMillis(),PI_2M_PROVISIONAL_1);
// for the PROVISIONAL 13 January 2012
AM_2M_PROVISIONAL_2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in8 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in8.putExtra("MyMessage","Your PROVISIONAL tax is due on 13 January 2012");
PI_2M_PROVISIONAL_2 = PendingIntent.getBroadcast(this, 7, in8, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_PROVISIONAL_13_January_2012 = Calendar.getInstance();
calendar_PROVISIONAL_13_January_2012.setTimeInMillis(System.currentTimeMillis());
calendar_PROVISIONAL_13_January_2012.set(2012, 0, 13,mHour, mMinute, 0);
AM_2M_PROVISIONAL_2.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_13_January_2012.getTimeInMillis(),PI_2M_PROVISIONAL_2);
// for the PROVISIONAL 5 May 2012
AM_2M_PROVISIONAL_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in9 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in9.putExtra("MyMessage","Your PROVISIONAL tax is due on 5 May 2012");
PI_2M_PROVISIONAL_3 = PendingIntent.getBroadcast(this, 8, in9, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_PROVISIONAL_5_May_2012 = Calendar.getInstance();
calendar_PROVISIONAL_5_May_2012.setTimeInMillis(System.currentTimeMillis());
calendar_PROVISIONAL_5_May_2012.set(2012, 4, 5,mHour, mMinute, 0);
AM_2M_PROVISIONAL_3.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_5_May_2012.getTimeInMillis(),PI_2M_PROVISIONAL_3);
// ===================== TERMINAL ALARM FOR THE TWO MONTHS ==========================
// for the TERMINAL 5 April 2012
AM_2M_TERMINAL_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in10 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in10.putExtra("MyMessage","Your TERMINAL tax is due on 5 APRIL 2012");
PI_2M_TERMINAL_1 = PendingIntent.getBroadcast(this, 9, in10, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_TERMINAL_5_APRIL_2012 = Calendar.getInstance();
calendar_TERMINAL_5_APRIL_2012.setTimeInMillis(System.currentTimeMillis());
calendar_TERMINAL_5_APRIL_2012.set(2012, 3, 5,mHour, mMinute, 0);
AM_2M_TERMINAL_1.set(AlarmManager.RTC_WAKEUP, calendar_TERMINAL_5_APRIL_2012.getTimeInMillis(),PI_2M_TERMINAL_1);
}
else {
Toast.makeText(getApplicationContext(), "Two months reminder is Off", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", false); prefsEditor.commit();
AM_2M_GST_1.cancel(PI_2M_GST_1);
AM_2M_GST_2.cancel(PI_2M_GST_2);
AM_2M_GST_3.cancel(PI_2M_GST_3);
AM_2M_GST_4.cancel(PI_2M_GST_4);
AM_2M_GST_5.cancel(PI_2M_GST_5);
AM_2M_GST_6.cancel(PI_2M_GST_6);
AM_2M_PROVISIONAL_1.cancel(PI_2M_PROVISIONAL_1);
AM_2M_PROVISIONAL_2.cancel(PI_2M_PROVISIONAL_2);
AM_2M_PROVISIONAL_3.cancel(PI_2M_PROVISIONAL_3);
AM_2M_TERMINAL_1.cancel(PI_2M_TERMINAL_1);
//alarmManagerForTwoMonth.cancel(pendingIntentOfTwoMonth);
}
break;
Now. here i got the Notification. but i want it seperate for all. Means if there is one already exist and if new is generated then it should not be update the already present but should have to create new seperate of it. Thanks.