¿Cómo puedo eliminar un evento del calendario en Android >= 8?
He intentado muchas cosas, leí muchos posts en SO al respecto pero no puedo hacerlo.
Quiero eliminar todos los eventos.
Así es como agrego mis eventos de calendario:
ContentResolver cr = Objects.requireNonNull(myContext.getContentResolver());
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, myEventCalendar.getStartEvent());
values.put(CalendarContract.Events.DTEND, myEventCalendar.getEndEvent());
values.put(CalendarContract.Events.TITLE, myEventCalendar.getTitle());
values.put(CalendarContract.Events.DESCRIPTION, myEventCalendar.getDescription());
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
Este método funciona muy bien, pero no puedo eliminar los eventos después. Aquí está mi código:
@RequiresApi(api = Build.VERSION_CODES.O)
public void deleteEventCalendar(Context myContext) {
Uri deleteUri = null;
Cursor cursor = myContext.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(CalendarContract.Events._ID));
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, id);
myContext.getContentResolver().delete(deleteUri, null, null);
}
cursor.close();
}
Siento que no estoy tan lejos, pero todavía es imposible. Por favor, ayúdeme.
davy.ai
Parece que tienes el código correcto para insertar eventos en el calendario, pero te faltan algunos parámetros para eliminar los eventos. Necesitas especificar el
CalendarContract.Events._ID
al eliminar los eventos. Puedes hacer esto recorriendo el objetoCursor
y obteniendo el valor de_ID
para cada evento. Luego puedes usar el métodoContentUris.withAppendedId()
para crear laUri
del evento y pasarla al métodoContentResolver.delete()
.Aquí tienes un ejemplo de cómo puedes hacerlo: