====== Transférer des données vers son nouvel androphone ======
===== Cas d'utilisation =====
==== Objectif ====
Je souhaite transférer certaines données depuis un //Honor 5X// sous //LOS-16//((LOS=LineageOS)) vers un //Xioami Poco F3// sous //LOS-19//, sans utiliser les services de Google.
==== Configuration ====
Les deux androphones sont rootés et équipés de Titanium-Backup.
===== Préparatifs =====
Mettre à jour les applications dont on souhaite transférer les données
Faire une sauvegarde intégrale des application et données de l'ancien androphone à l'aide de //Titanium-Backup//.
==== Installation de Calendar Import-Export ====
Pour le transfert des données du calendrier, j'utilise l'application [[https://f-droid.org/fr/packages/org.sufficientlysecure.ical/|Calendar Import-Export]], disponible sur le magasin d'application F-Droid. L'application doit être installée sur les deux androphones.
Si l'application //F-Droid//((App donnant accès au magasin d'applications éponyme, tout comme l'app //Play Store// pour le magasin Google.)) n'est pas déjà installée, on peut profiter de l'occasion pour l'installer, comme décrit dans la fiche d'[[phone:f-droid-full-install|installation de F-Droid]].
S'agissant d'une installation de circonstances ((On n'a pas de raison de conserver l'application sur ses androphones.)), on peut choisir de récupérer le fichier APK [[https://f-droid.org/fr/packages/org.sufficientlysecure.ical/|disponible sur le site]] web de F-Droid puis de l'installer comme on le ferait avec tout fichier APK, après avoir [[phone:f-droid-verification#verifier_la_signature_de_l_application_f-droid|vérifié sa signature]].
==== Mettre à jour les applications ====
- Mettre à jour les applications dont on souhaite transférer les données.
- Faire une sauvegarde intégrale des application et données de l'ancien androphone à l'aide de Titanium-Backup.
===== Transfert =====
Je souhaite transférer les données locales((Appareil.)) de deux applications système : //Contacts// et //Agenda//. Le cas de l'application Mail ne se pose pas car elle a disparu des ROM LOS récentes((Mon choix s'est porté sur K9, très proche en termes d'interface utilisatrice et libre.)). Je leur applique une procédure particulière. Pour les application standard, j'utilise
==== Contacts ====
Contact est doté d'une fonctionnalité d'import-export vers un fichier. Le transfert est donc trivial.
- Sur l'ancien modèle
- ouvrir l'application Contacts
- sélectionner le compte que l'on veut transférer
- Paramètres > Export > Exporter vers un fichier VCF
- copier le fichier obtenu, par exemple, en reliant l'androphone à l'ordi, en mode partage de fichiers
- Sur le nouveau modèle
- récupérer le fichiers exporté, par exemple en le reliant à l'ordi, en mode partage de fichier
- ouvrir l'application Contacts
- sélectionner le compte où l'on souhaite importer les données
- Paramètres > Importer > Fichier .vcf
- choisir le fichier que l'on a récupéré
==== Agenda ====
En l'absence de fonctionnalité import-export, on a recours à l'application //Calendar Import-Export//.
- Sur l'ancien modèle
- ouvrir l'application Importation/exportation d'agendas
- sélectionner le compte local (menu déroulant)
- choisir exporter et désigner le fichier qui contiendra l'export
- transférer le fichier d'export (comme on l'a fait pour //Contacts//)
- Sur le nouveau modèle
- récupérer le fichier précédemment exporté (comme on l'a fait pour les //Contact//)
- ouvrir l'application Agenda
- si nécessaire créer un calendrier local : Paramètre > Ajouter un calendrier hors ligne
- ouvrir l'application Importation/exportation d'agendas
- sélectionner le compte local (menu déroulant)
- choisir "Importer un fichier" (l'appli recherche dans la mémoire les fichiers potentiellement importables et met à jour le menu déroulant)
- sélectionner le fichier précédemment récupéré (dans menu déroulant)
- choisir charger (l'appli analyse le contenu du fichier,fait un compte rendu et propose d'insérer les entrées trouvées)
- choisir "insérer les entrées
Dans mon cas, le calendrier a été parfaitement importé((Tous les champs présents, les répétitions, les rappels.)) MAIS les événements n'étaient pas modifiables :-( Mes tentatives de modification des paramètres d'export ou d'import ont été infructueuses. J'ai utilisé [[phone:transferer-donnees#patch_du_fichier_d_agenda|une méthode assez sale]] mais qui a fonctionné.
==== Autres applications ====
Pour les autres applications, j'utilise TitaniumBackup.
=== Transfert de la sauvergarde TitaniumBackup ===
On commence donc par récupérer, sur le nouvel androphone, l'arborescence de sauvegarde faite sur l'ancien androphone. Elle se trouve à la racine de l'espace de stockage : ///TitaniumBackup//.
Dans le cas d'utilisation traité, sur le nouvel androphone, les applications concernées sont vides de données. Sinon, effectuer une sauvegarde préalable((La version gratuite de TitanimBackup ne conservant qu'une seule sauvegarde, on aura pris soin de sauvegarder la sauvegarde (un simple renommage suffit) avant de transférer l'arborescence récupérée sur l'ancien androphone)).
Comme pour les données des applications système, je choisis de passer par l'intermédiaire d'un ordi :
- relier l'ancien androphone à l'ordi, en mode partage de données
- copier l'intégralité du répertoire ///TitaniumBackup// sur l'ordi
- relier le nouvel androphone à l'ordi, en mode partage de données
- copier l'intégralité du répertoire ///TitaniumBackup// sur le nouvel androphone
=== Restauration de données ===
La restauration des données d'applications non-système ne présente pas de particularité par rapport à un usage classique de //TitaniumBackup//. Les sauvegardes disponibles sont affichées. On ne restaure que les données.
Pour certaines application, il existe plusieurs ressources. Être attentive à laquelle on restaure. Ne pas craindre les essais-erreurs. En cas d'échec, ne pas oublier d'effacer les données de l'application.
Exemples de données restaurées avec succès : Color Note, Feedly, Compte Ameli, Sncf Connect, Firefox…
==== SMS/MMS ? ====
J'ai profité du changement de smartphone pour faire une R.A.Z. :-D J'avais cependant repéré une application open source, [[https://f-droid.org/packages/com.zegoggles.smssync/|Backup+]] (**non testée**) qui aurait pu faire l'affaire.
===== Patch du fichier d'agenda exporté =====
==== Le problème ====
Comme indiqué plus haut, l'import du fichier d'agenda dans le nouvel androphone était complet mais les événements n'étaient pas modifiables. En revanches, les événements ajoutés manuellement((Via l'application //Agenda//.)) étaient modifiables. Les spécialistes d'iCal trouveront sans doute une solution simple. J'ai tâtonné et fini par résoudre très salement le problème. Je l'indique ci-après au cas où cela pourrait donner des idées.
==== Première tentative ====
J'appelle old-calendar.ics le fichier d'export obtenu sur l'ancien androphone.
J'en fait une copie sur mon ordi que je nomme old-calendar_KDE.ics. J'ouvre cette copie dans KDE-Korganizer, en tant que nouvel agenda((old-calendar_KDE.ics devient une ressource locale gérée par Korganizer). La restauration est complète, les événements sont modifiables. Au passage, Korganizer effectue des modifications dans le fichier pour l'adapter ses propres conventions de notation.
Je détache le fichier de Korganizer((Commande "Supprimer le calendrier".))
Je transfère le fichier au nouvel androphone ce qui me permet de l'importer dans un nouvel agenda, [[phone:transferer-donnees#agenda|comme précédemment décrit dans la procédure]].
La restauration est complète, les événement sont modifiables MAIS la durée de nombreux événements se trouve raccourcie d'une heure, alors qu'il s'affichaient correctement dans Korganizer.
==== Analyse ====
D'un côté, je dispose d'un fichier (old-calendar.ics) que l'application d'import-export restaure complètement, avec les bonnes durées mais dont les événements ne sont pas modifiables. De l'autre un fichier (old-calendar_KDE.ics) qui se restaure complètement, avec des événements modifiables mais écourtés. Une analyse du contenu des fichiers laisse apparaître une différence de notation des fins des durées d'événements, par exemple :
old-calendar.ics
DTSTART;TZID=Europe/Paris:20230402T140000
DTEND:20230402T150000Z
old-calendar_KDE.ics
DTSTART;TZID=Europe/Paris:20230402T140000
DTEND;TZID=UTC:20230402T150000
==== Solution ====
La première notation de la date de fin est correctement interprétée après l'import. La seconde ne l'est pas. J'ai donc modifié la notation utilisée dans le second fichier pour l'aligner sur celle du premier, en utilisant les expressions rationnelles((Un éditeur de texte disposant des expressions rationnelles dans sa fonction de recherche/remplacement fera le job.)).
cat old-calendar_KDE.ics | sed -r 's/DTEND;TZID=UTC:(.{15})/DTEND:\1Z/' > old-calendar_KDE_mod.ics
Le fichier //old-calendar_KDE_mod.ics// ainsi obtenu est importé dans le nouvel androphone, en suivant la [[phone:transferer-donnees#agenda|procédure précédemment décrite]].
Les événement sont entièrement restaurés et modifiables.