Agregar evento semanal al calendario

Me gustaría añadir un evento a Calendar nativo, aquí quiero repetir este evento todos los Tuesday hasta el 31 December 2015 :

 btnWeekly.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Calendar calendar = Calendar.getInstance(); Intent intent = new Intent(Intent.ACTION_INSERT) .setData(Events.CONTENT_URI) .setType("vnd.android.cursor.item/event") .putExtra(Events.TITLE, "Tuesdays") .putExtra(Events.DESCRIPTION, "Tuesday Specials") .putExtra(Events.EVENT_LOCATION, "Lixious Bench") .putExtra(Events.RRULE, "FREQ=WEEKLY;BYDAY=Tu;UNTIL=20151231") .putExtra(Events.DTSTART, calendar.getTimeInMillis()) .putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true) .putExtra(CalendarContract.Events.HAS_ALARM, 1) .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY); startActivity(intent); } } 

Problema: En Calendario muestra este evento para cada Thursday , mientras que he utilizado " tu " en mi código

Y una cosa más que si yo también quiero dar tiempo de duración para este evento como: from 6:00 pm to 9:00 pm solamente.

3 Solutions collect form web for “Agregar evento semanal al calendario”

Dijiste que se repetía el jueves, pero lo que conseguí fue un día de inicio del jueves con una repetición cada martes. Así que estoy bastante seguro de que la parte RRULE es correcta.

Creo que todo lo que tienes que hacer es establecer las horas reales de inicio y fin con Calendar para obtener los milisegundos correctos, luego el usuario "beginTime" en lugar de "dtstart" y "endTime" en lugar de "dtend".

 @Override public void onClick(View v) { // If you want the start times to show up, you have to set them Calendar calendar = Calendar.getInstance(); // Here we set a start time of Tuesday the 17th, 6pm calendar.set(2015, Calendar.MARCH, 17, 18, 0, 0); calendar.setTimeZone(TimeZone.getDefault()); long start = calendar.getTimeInMillis(); // add three hours in milliseconds to get end time of 9pm long end = calendar.getTimeInMillis() + 3 * 60 * 60 * 1000; Intent intent = new Intent(Intent.ACTION_INSERT) .setData(Events.CONTENT_URI) .setType("vnd.android.cursor.item/event") .putExtra(Events.TITLE, "Tuesdays") .putExtra(Events.DESCRIPTION, "Tuesday Specials") .putExtra(Events.EVENT_LOCATION, "Lixious Bench") .putExtra(Events.RRULE, "FREQ=WEEKLY;BYDAY=TU;UNTIL=20150428") // to specify start time use "beginTime" instead of "dtstart" //.putExtra(Events.DTSTART, calendar.getTimeInMillis()) .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start) .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end) // if you want to go from 6pm to 9pm, don't specify all day //.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true) .putExtra(CalendarContract.Events.HAS_ALARM, 1) .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY); startActivity(intent); } 

Para el martes las Iniciales tienen que ser todas las capitales, es decir. TU

 .putExtra(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=TU;UNTIL=20151231") 

Para dar tiempo de duración para el evento que necesita agregar

 .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,getMillis(begintime)) .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, getMillis(endtime)) 

Puede obtener más información acerca de la regla de recurrencia aquí y aquí

Aquí te estoy compartiendo un simple código de esperanza que te ayudará o te guiará:

 Intent intentAlarm = new Intent(getActivity(), AlarmReceiver.class); intentAlarm.putExtra("name", data.getName()); intentAlarm.putExtra("desc", data.getDescription()); intentAlarm.setData(Uri.parse("custom://" + data.getId())); intentAlarm.setAction(String.valueOf(data.getId())); // Create the AlarmManager AlarmManager alarmManager = (AlarmManager) getActivity() .getSystemService(Context.ALARM_SERVICE); // Set the alarm for a particular time alarmManager.set(AlarmManager.RTC_WAKEUP, Calendar_Object .getTimeInMillis(), PendingIntent.getBroadcast( getActivity(), Integer.parseInt(data.getId()), intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT)); 
  • Android startActivityForResult no devolver datos de calendario
  • ¿Cómo puedo agregar un nuevo calendario de teléfono a Android?
  • Calendario de Android - Comienza semana con lunes
  • Cómo configurar Java.util.calendar en un período de tiempo específico en el futuro
  • Cómo editar los eventos del calendario a través de la aplicación android
  • Calcular el número de semanas en un año determinado
  • ¿Cómo mostrar una interfaz de usuario de calendario en una aplicación de Android?
  • Material-calendarview set color de fondo de las fechas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.