Synchronisation des contacts entre OwnCloud et DAVdroid

Comme dit il y a plusieurs mois, je n’utilise plus du tout d’applications de Google Apps sur mon téléphone Android, cela signifie qu'aucun compte Google n’est configuré sur mon téléphone. Cependant, je souhaite garder mes contacts synchronisés avec d’autres appareils. Pour ce faire, je stocke mes contacts dans l’application Contacts d'OwnCloud et j’utilise DAVdroid pour les synchroniser sur le téléphone.

Ça marchait bien, très bien, jusqu’à ce que je fasse (enfin !) la mise à jour d'OwnCloud (la 8.1.x).

En effet, quelques jours après avoir fait la mise à jour, je me suis aperçu qu’un message d’erreur de DAVdroid apparaissait, j’ai laissé passer en supposant que j’avais juste coupé la 3G au mauvais moment pendant la synchro et que DAVdroid n’avait pas apprécié. Puis j’ai décidé de modifier un contact sur le téléphone…

Et là, c’est le drame…

Une fois les modifs du contact effectuées sans souci, un autre message d’erreur apparait sur DAVdroid et ma modification n’est pas prise en compte sur l’application Contacts d'OwnCloud !

Comme je n’arrive pas à comprendre ce qu’il se passe, je décide de supprimer mon compte sur le téléphone pour le re-configurer (ce qui efface les contacts associés au compte et les re-synchronise).

Et là, nouveau drame !

Sur les plus de six-cents contacts que j’ai sur OwnCloud côté serveur, seulement une centaine sont récupérés !

Je me dis que je ne dois pas être le seul dans ce cas, et je trouve ce sujet (en anglais) qui explique grosso modo que les versions de DAVdroid avant la 0.8 avaient un bug, qui a été corrigé dans la 0.8.x, et que le bug opposé a été introduit dans OwnCloud avec la 8.1.x…

Le message du développeur de DAVdroid est très clair : “Funny that it worked with older DAVdroid versions just because DAVdroid had the opposite bug”.

Mais comment qu’on fait alors ?

Deux solutions :

  • Attendre qu'OwnCloud corrige le problème (probablement dans la 8.1.4) ;
  • Modifier ses contacts pour éviter de tomber dans le bug.

À noter que le bug a été en réalité introduit par SabreDAV qui est réutilisé par la partie CardDAV de OwnCloud Contacts.

Voici donc la méthode pour contourner le problème :

  1. Exporter tous ses contacts d'OwnCloud (il y a un bouton Exporter dans l’application Contacts).
  2. Enregistrer ce fichier, puis supprimer les @ dans les lignes qui commencent par UID (avec un éditeur de texte ça le fait).
    Pour ceux qui n’ont pas peur des commandes, il est possible de le faire en une passe avec :
    sed -e 's/^UID:\(.*\)@\(.*\)$/UID:\1\2/g' -i Contacts.vcf
    On peut ensuite vérifier avec la commande suivante. Si des lignes ressortent, relancer la commande précédente :
    grep '^UID:.*@.*' Contacts.vcf
  3. Supprimer tous les contacts depuis l’application Contacts (il suffit de cliquer sur la corbeille).
  4. Importer le nouveau fichier Contacts.vcf dans Contacts (un gros bouton est apparu au milieu de l’écran).

Et voilà, vous pouvez relancer la synchronisation sur DAVdroid, et tous les contacts réapparaissent !

Haut de page