Thanks for the quick answer!
Not sure if I understand everything as you said it:
“DAV server”: Do you mean owncloud or the CardDAV-Plugin in OS X?
If I understand the rest correctly then it could help to use a contact editor on the phone that does create a vCard in version 3.0 format. Correct?
I tried a different calendar app from the market, and it works there without problems, so it’s definitely a problem with the Android Calendar.
One thing that is obviously null is the calendar title/name (I have no idea what it’s name is).
If you know what I mean, maybe you can send me a build where you set that to a proper value so I can test, otherwise I will see if I can find it myself.
Or you could tell me where exactly events are passed to a calendar so I can debug this myself.
RFC 4791 6.2.1: »CALDAV:calendar-home-set Property
Typically, users will group all the calendar collections that they own under a common collection. This property specifies the URL of collections that are either calendar collections or ordinary collections that have child or descendant calendar collections owned by the principal.«
So, I think this is a matter of interpretation. What is “the URL of calendar collections”? “The URL” is singular, “calendar collections” are plural. Until I have found/heard good arguments, I will interpret it as “URL that contains calendar collections (but not: is a calendar collection”) and then DAVdroids behaviour is correct.
What I have missed is that the home-set can contain nested collections and only the last level must be a calendar collection. So the detection Depth should be Infinity, not 1 (and it should only detect calendars). I will consider this as an enhancement issue, thanks for reporting.
Actually I didn’t have a particular client in mind when implementing this feature, but wanted it to be vCard 4.0
compliant. I think RFC 6350 is pretty clear that for URI’s which are used for voice communication TEL properties should be preferred, and the SipAddress data kind in Android is only used for voice calls AFAIK. (The SipAddress data kind is displayed as “Internet Call” in the standard contacts app “People”.)
I cleared my address book and set up a new sync using 0.4.1 and indeed it displays some contacts now. Namely the same 5 contacts that I get on /remote.php/carddav/addressbooks/mimox/contacts. This means there have been two bugs, one on the client and one on the server side. The client side is fixed. Thanks a lot!
The first problem seems to be this one: Issue 2229: Calendar: Deleting one instance of a recurring event (excluding), results in duplication of it.. As it seems, the calendar provider doesn’t add an EXDATE when deleting a single occurence, but adds another event with STATUS: CANCELLED.
This behaviour is controlled by the calendar app/provider and not by DAVdroid. DAVdroid just gets two events from the calendar provider and so it syncs the two events.
Couldn’t reproduce the second problem. I did exactly as you said – EXDATE was set by MyKolab and then the event disappeared in the calendar as expected. I guess that’s because you’re using the default Android calender app while I use the pre-installed Samsung S Planner app. I think this problem is an instance of Issue 21426: Support for complete EXDATE format in recurring events in Calendar / pim.
Basically, this is an Android bug again. In this case, DAVdroid could provide a workaround by rewriting EXDATE to a format that the Android calendar provider understands. I have opened an enhancement issue for this, see #82