Android calendar events not showing

Hi, I have the following code to add events to my calendar:

public String addCalendarEntry(CalendarDTO calendar) { ContentValues event = new ContentValues(); ContentResolver cr = getContentResolver(); long startMillis = calendar.getStartDate().getTimeInMillis(); long endMillis = calendar.getEndDate().getTimeInMillis(); String timeZone = TimeZone.getDefault().getID(); event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId()); event.put(CalendarContract.Events.TITLE, calendar.getTitle()); event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription()); event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation()); event.put(CalendarContract.Events.DTSTART, startMillis); event.put(CalendarContract.Events.DTEND, endMillis); event.put(CalendarContract.Events.ALL_DAY, Boolean.getBoolean(String.valueOf(calendar.isAllDay()))); // 0 for false, 1 for true event.put(CalendarContract.Events.HAS_ALARM, 1); // 0 for false, 1 for true event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone); Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, event); return uri.getLastPathSegment(); } 

This code worked fine until another day and suddenly does not add any events to my calendar. This is also not a mistake, so here I am losing.

CalendarDTO is just a data transfer class as such:

 public class CalendarDTO { int id; String title; String description; String location; Calendar startDate; Calendar endDate; boolean isAllDay; // getters and setters removed for brevity } 

Any tips are greatly appreciated.

+6
source share
1 answer

Do you check that there is a calendar with calendar.getId() ?

And from the docs: http://developer.android.com/reference/android/provider/CalendarContract.Events.html

Writing to events Additional restrictions on all updates and inserts in the event table:

If allDay is set to 1 eventTimezone, this is TIMEZONE_UTC, and the time should correspond to the midnight border.

Try something like this:

 event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId()); event.put(CalendarContract.Events.TITLE, calendar.getTitle()); event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription()); event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation()); if(calendar.isAllDay){ Calendar start=calendar.getStartDate(); start.set(Calendar.HOUR_OF_DAY, 0); start.set(Calendar.MINUTE, 0); start.set(Calendar.SECOND, 0); start.set(Calendar.MILLISECOND, 0); Calendar end=start; end.add(Calendar.DAY_OF_MONTH,1); event.put(CalendarContract.Events.DTSTART, start.getTimeInMillis()); event.put(CalendarContract.Events.DTEND, end.getTimeInMillis()); event.put(CalendarContract.Events.EVENT_TIMEZONE, Time.TIMEZONE_UTC); }else{ event.put(CalendarContract.Events.DTSTART, startMillis); event.put(CalendarContract.Events.DTEND, endMillis); event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone); } event.put(CalendarContract.Events.HAS_ALARM, 1); event.put(CalendarContract.Events.ALL_DAY, calendar.isAllDay()?1:0); 
+5
source

Source: https://habr.com/ru/post/990047/


All Articles