CalDAV Clients/Calendar Sync for Android
From March 2010 a CalDAV solution for Android has appeared in the Android App store. Find it on a search for 'caldav'. The company has a page at is http://www.hypermatix.com/products/calendar_sync_for_android with some more information.
Calendar Sync for Android will synchronise the calendar on your phone with a remote CalDAV server, including a DAViCal server.
This is a calendar synchronisation program, and as such it needs to be given a calendar URL, which in DAViCal's case will be something of the form:
Where 'calendar' is generally 'home', by default, on DAViCal.
Using Self-signed SSL Certificates
If you use a self-signed SSL certificate on the Android the process of making it work is somewhat convoluted...
According to Brendan Whelan from Hypermatix, the following steps are needed:
- First, you need to create a keystore containing the cert of your Certification Authority (albeit your own server).
- Bob Lee has an excellent blog post on how to do this. Just follow his steps one and two from http://crazybob.org/20120/02/android-trusting-ssl-certificates.html
- Essentially this involves getting old of the root certificate. I use the CACert.org root authority myself, and their root is downloadable from their website, but you need to follow part of the above process to convert it to a .bks file.
- Rename your file to "CA.bks".
- Create a new directory on your phone's SD card at /CalDAVSync/CA/ and drop the CA.bks in there.
- Then in CalendarSync, Advanced connection settings, check to enable using the keystore and enter the password you chose for the keystore.
Do a sync and it should work!
One caveat though: the app can't read the keystore while your phone is connected to a PC and in USB hard drive mode, so you'll need disable USB drive mode before sync will work without error.
- It seems to synchronise my calendar into the local calendar app, just fine, but I don't see it synchronising changes I enter into the Android calendar back into DAViCal.
- After each synchronisation attempt it reports "Last Synchronized: Never" and "Synchronisation status: java.lang.nullPointException" - maybe this is related to the above!