I had the same problem and here is the workaround I used : https://github.com/bitfireAT/davdroid/issues/578#issuecomment-126699251
re-syncing a modified event sets STATUS:TENTATIVE
create an event in thunderbird lightning, not setting the status. This syncs to the CalDAV server without any STATUS:* - line in the VEVENT.
sync to device via davdroid
edit the event in the stock android google calendar, only modifying title of the event
re-sync to server
the event now includes a STATUS:TENTATIVE . I assume this was set when editing the event in the google calendar.
Problem: now the event will always keep the status ‘tentative’ but as a user I have never requested this.
I do not see any easy fix. My suggestion would be to explicitly write a STATUS: to the google calendar when parsing the EVENT, possibly setting status:confirmed if there is not status: set in the event.
- ask google calendar not to assume status:tentative if the field is empty.
- request thunderbird lightning to always include a status: field , whether confirmed, tentative, etc. but never write <nothing>
ical4android takes the status from the Calendar provider only when it’s set. When writing, it sets status only when the value from the iCalendar is not
So, it seems that Events.STATUS has been set be your calendar app, as you have assumed.
If this is a problem for you, you may use another calendar app or try to get a patch into the AOSP calendar app (good luck ).
However, as far as I can see, this is not a DAVdroid problem.
cross-linking the android bug: android-bug
I agree davdroid can’t do anything here. Some background:
I think this is because in the EventInfoManager, /src/com/android/calendar/EventInfoFragment.java#L888
the status is set to Attendees.ATTENDEE_STATUS_NONE by default (originally part of the AttendeesColumns), which points to the same constant value as STATUS_TENTATIVE for the STATUS field.
So whoever designed this, not only set ATTENDEE_STATUS_NONE == STATUS_TENTATIVE = 0, but also got confused which field to save for Attendee and which belongs to the eventStatus field of the Event. (Great Programmer )
Means: everytime an event that has eventStatus = NULL is edited, it will be overwritten with eventStatus = 0 (which means tentative!)