style notification example ejemplo custom android notifications android-ndk android-notifications android-notification-bar

notification - Android: Alarma mĂșltiple no funciona



notificationmanager android ejemplo (2)

En Mi aplicación, he configurado las dos alarmas. En toogleButton voy a configurarlo con el siguiente código:

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;

Pero no recibo la notificación de amarm en ese momento de deseo y si el botón está activado. Ahora, después de la hora de alarma, es pasajero y si lo hago, me desconecto y enciendo, entonces obtengo la alarma.

Entonces, ¿qué pasa con mi Código? Por favor, ayúdame para eso.

EDITADO:

Con esta respuesta, he resuelto poner la alarma por tiempo múltiple: ¿cómo puedo configurar múltiples alarmas en Android?

Pero me pregunto cómo manejarlo. Me refiero a cómo manejar esa alarma en el receptor con un mensaje diferente?

Mi código actualizado con la alarma múltiple está a continuación:

//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);

Y el Código para el receptor es como a continuación:

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); }

¿Ahora cómo manejar esa alarma diferente? Ayudame por esto Gracias.

Editado

Por favor, este código:

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;

Ahora. aquí recibí la Notificación. pero lo quiero separado para todos. Significa si ya existe uno y si se genera nuevo, entonces no se debe actualizar el que ya está presente, sino que se debe crear un nuevo separato. Gracias.


Ok, porque no haces esto

Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); in.putExtra("MyMessage","Your tax is due on blah blah blah"); pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);

Y en el onRecieve

Simplemente recupere el mensaje de la intención

public void onReceive(Context context, Intent intent) { // blah blah Toast.show(context,intent.getStringExtra("MyMessage"),Toast.LENGTH_LONG).show();


Por favor intente mi respuesta desde el siguiente enlace utilizando la base de datos.

AlarmManager con receptor de difusión

Primero agregue la hora y fecha de alarma en la base de datos de su actividad y luego cree una clase de receptor de difusión para obtener los datos de la base de datos.