Dans mon application, j'ai réglé les deux alarmes. Sur toogleButton sur je vais le mettre avec le code ci-dessous:Android: Alarme multiple ne fonctionne pas
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;
Mais je ne reçois pas la notification de AMARM à ce moment-là du désir et si la bascule est activée. Maintenant, après que l'heure de l'alarme soit passée, et si je le fais, je l'éteins, puis je rallume l'alarme.
Alors, quel est le problème avec mon code? S'il vous plaît aidez-moi pour cela.
ÉDITÉ:
Avec thia réponse que je résoudre pour régler l'alarme pour le temps multiple: How can I setup multiple alarms in Android?
Mais je me demande comment obtenir la poignée. Je veux dire comment gérer cette alarme sur le récepteur avec un message différent?
Mon code mis à jour avec l'alarme multiple est ci-dessous:
//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);
et le code pour le récepteur est comme ci-dessous:
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);
}
Maintenant, comment gérer cette alarme différente ?? Aidez-moi pour ça. Merci.
Edité
Pleasee ce 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;
maintenant. ici j'ai eu la notification. mais je le veux séparé pour tous. Moyens s'il en existe déjà un et si nouveau est généré alors il ne devrait pas être mis à jour le déjà présent mais devrait en créer un nouveau séparé. Merci.
ru en utilisant la base de données SQLite (base de données interne) pour enregistrer l'alarme et utiliser le récepteur de diffusion pour obtenir la notification d'alarme. –
Non, je n'utilise aucune base de données pour cela. . . Pourquoi ? devrais-je le faire? –
S'il vous plaît voir ma question mise à jour. –