Android, HTC and CardDav contacts

CardDAV. Heard of it? It’s a standard way to transmit information about a contact back and forth. Name, Title, D.o.B etc. There no fixed list of attributes, so things are a bit more complex than they might first appear, but on the whole it works. It’s also a standard. An open standard. Anything that chooses to can speak CardDAV without fear.

Many things do choose to speak CardDAV (and CalDAV for that matter). Android almost, but not quite, does CardDAV. Google went to the trouble of fully implementing a bunch of proprietary cobblers, so why not CardDAV? Guess that’s why I’m not a multi-billionaire CEO!

The situation can be improved with Apps; but if you are unfortunate enough to use Samsung or HTC (or any other OEM device with added “sparkles”) you could be in for trouble.

Before I continue, a little aside for the Product Managers at HTC: see when you “add value” to a device? When you “implement strategies the communicate our core values” or whatever other meaningless twaddle you wish to prattle on about; remember Master Yoda “Do or do not do, there is no try.” When you add to the base Android, it had better work. 100%, no exceptions. If a bug is reported, you better fix it; 100%, no exceptions. What you should not do is claim that the major bug in functionality is a design feature and then ignore your customers.

Ahem. Sorry. It’s just really annoying when a 1 year old phone doesn’t work. Oh that reminds me, need to go back and run some tests to see why my browser keeps crashing…

Fixing CardDAV on normal Android

Simple: install “DavDroid” or “CardDAV Sync” (others are available).
Follow the steps to set-up sync accounts.
Job done.

Almost (but not quite) fixing CardDAV on the steaming pile that is “HTC Sense”

Ahem. Sorry. Again.

You must install “CardDAV Sync“. I am not sure what magic Marten worked, but they have at least managed to bully HTC into almost working. DavDroid is a great app, but they have chosen not to address the HTC Sense mess (and I can’t say I blame them).

Once “CardDAV Sync” is installed – back-up your contacts. Seriously. This could all go horribly wrong.

Me, I’d use “Thunderbird AB Sync“. Once safely in Thunderbird (or PIM of your choice) you can the push them up to your CardDAV server (for example, “ownCloud“).

Now, sync from your server to the device.

Done that? Cool.

New contacts will just appear. Duplicates will…err…duplicates? There are none really. You now have two Contacts accounts and things get weird.

Due to the bug that HTC refuse to fix (see above) you will have contacts in a “Phone” account (ones that pre-existed on the phone may also be “Sim”, depending on where you store things) and in “Phone-only (unsynced)” (brought down from the server). Depending on the setting screen you enter, “Phone-only (unsynced)” may also be called “Unknown”. All this means you will have duplicated entries, but each in a different account.

Duplicated accounts on HTC

HTC duplicate accounts

There are two solutions to the duplication:

1. Link them

2. Delete the “Phone” one entries, but not “Phone-only (unsynced)”.

HTC linked accounts

HTC linked accounts

The crazy thing is, the account HTC calls “Phone-only (unsynced)” is managed by “CardDAV Sync” and any updates to this will sync back and forth without issue. Unfortunately your HTC device will not let you create new “Phone-only (unsynced)” contacts, only edit existing contacts in this account. The HTC device will want you to add new contacts to “Phone” which do not sync. ARG!

After linking (and certainly before deleting) go through all you contacts and ensure that values are correctly present in the “Phone-only (unsynced)” account.


And send a message to HTC asking to fix their tripe.

Leave a Reply