4 votes

Transfert de messages vers Android à partir d'une base de données sqlite sur mon ordinateur portable

Je suis un nouvel utilisateur d'Android. Je suis passé de Nokia à Android aujourd'hui seulement. J'ai cherché sur Google diverses solutions pour transférer mes sms (messages texte uniquement) de mon ancien Nokia vers mon nouvel Android (Galaxy Ace avec Android 2.3).

Après avoir exploré mon ordinateur portable, j'ai découvert que les sms synchronisés (à l'aide de Nokia PC Suite) étaient stockés dans AppData sous la forme d'un fichier sqlite.

Puis-je transférer tous ces éléments sur mon nouvel Android ? Y a-t-il une application pour cela ?

2voto

gopi1410 Points 203

J'ai résolu le problème. Je documente la solution ici pour des références futures.

En utilisant n'importe quel gestionnaire sqlite (j'ai utilisé le plugin SQlite Manager de Firefox), exportez la base de données au format XML (en général, tout gestionnaire de base de données a des options pour exporter la base de données aux formats csv, xls et xml).

Si votre sqlite a été généré par nokia pc-suite sync, vous obtiendrez un xml comme :

<?xml version="1.0" encoding="utf-8"?>
<!--
- sqlite-manager XML Dump
- version 0.7.1
- http://sqlite-manager.googlecode.com
-
- Generation Time: Sun, 08 Jul 2012 14:12:42 GMT
- SQLite version: 3.7.10
-->

<!-- Database: msg_db.sqlite -->
<sm_xml_export version="2.0">
  <database name="msg_db.sqlite">
    <table name="messages">
      <column name="msg_txt" type="3">Your message body</column>
      <column name="msg_address" type="3">+919203487229</column>
      <column name="msg_folder" type="1">1</column>
      <column name="msg_time" type="1">1305483332</column>
      <column name="msg_imei" type="3">355940045825435</column>
      <column name="msg_status" type="1">36</column>
      <column name="msg_uid" type="3">{c33eb602-1456-4542-a755-268dc3728638}</column>
      <column name="msg_address_substr" type="3">4487229</column>
      <column name="msg_subject" type="3"/>
      <column name="msg_attachments" type="3"/>
      <column name="msg_type" type="1">0</column>
      <column name="msg_binary_path" type="3"/>
      <column name="msg_attachment_tns" type="3"/>
      <column name="msg_sent_frompc" type="1">0</column>
    </table>
    <table name="messages">
      <column name="msg_txt" type="3">Hi gopi, how are you? ;)</column>
      <column name="msg_address" type="3">+919582821300</column>
      <column name="msg_folder" type="1">1</column>
      <column name="msg_time" type="1">1305516490</column>
      <column name="msg_imei" type="3">355940045825435</column>
      <column name="msg_status" type="1">36</column>
      <column name="msg_uid" type="3">{15a0d257-2318-4baa-b764-dd14c1aa1fb5}</column>
      <column name="msg_address_substr" type="3">2821300</column>
      <column name="msg_subject" type="3"/>
      <column name="msg_attachments" type="3"/>
      <column name="msg_type" type="1">0</column>
      <column name="msg_binary_path" type="3"/>
      <column name="msg_attachment_tns" type="3"/>
      <column name="msg_sent_frompc" type="1">0</column>
    </table>
  </database>
</smses>

Ensuite, vous pouvez utiliser le script php suivant pour effectuer la conversion vers le script de génération du format xml requis par le système de gestion de l'information. Application de sauvegarde et de restauration de SMS .

<?php

$file=fopen("sms-20120708160401.xml", "w");
$xml=simplexml_load_file("messages.xml");
echo $xml->getName()."<br/><br/>";
$begin="<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\n";
$begin.='<?xml-stylesheet type="text/xsl" href="sms.xsl"?>'."\n";
$begin.='<smses count="">'."\n";
fwrite($file,$begin);
$start='  <sms protocol="0" ';
$finish='/>';
$i=1;
$j=0;

foreach($xml->children()->children() as $table) {
    echo $i++."  ";
    $read=1;
    $msg_status=$table->column[5];
    $msg_folder=$table->column[2];
    if($msg_status=="34") {
        $type=1;
        $read=0;
    }
    else if($msg_status=="36") {
        if($msg_folder=="4294967295") {
            $type=3;
        }
        else {
            $type=1;
        }
    }
    else if($msg_status=="1" || $msg_status=="5") {
        if($msg_folder=="4294967295") {
            $type=3;
        }
        else {
            $type=2;
        }
    }
    else {
        echo "<br/>".$msg_status."; ".$msg_folder."<br/><br/>";
    }
    $body=htmlspecialchars($table->column[0]);
    $body=str_replace("\n", '&#10;', $body);
    $address=$table->column[1];
    if(strlen($address)==11) {
        $address="+91".substr($address,1);
    }
    else if(strlen($address)==10) {
        $address="+91".$address;
    }
    else if($address=="") {
        $i--;
        continue;
    }

    $sms=$start;
    $sms.='address="'.$address.'" ';
    $sms.='date="'.$table->column[3].'000" ';
    $sms.='type="'.$type.'" ';
    $sms.='subject="null" ';
    $sms.='body="'.$body.'" ';
    $sms.='toa="null" ';
    $sms.='sc_toa="null" ';
    $sms.='service_center="null" ';
    $sms.='read="'.$read.'" ';
    $sms.='status="-1" ';
    $sms.='locked="0" ';
    $sms.='date_sent="null" ';
    $sms.=$finish."\n";

    fwrite($file, $sms);
}

$end='</smses>';
fwrite($file, $end);
fclose($file);

?>

Un point à noter :

Vous devez écrire manuellement le count dans l'élément smses étiquette. Vérifiez simplement le nombre de lignes dans votre fichier xml généré et soustrayez-en 4 OU écrivez simplement le dernier nombre entier renvoyé par le script.

Maintenant, il suffit de l'envoyer à votre Android et de le restaurer en utilisant la fonction Application de sauvegarde et de restauration de SMS . Bingo ! vous avez terminé !

1voto

Milner Points 533

Il n'est pas aussi simple que de copier la base de données SQLite sur votre nouvel appareil Android, car les structures internes seront différentes (elles le sont même entre les versions d'Android). Il existe de nombreuses applications dans le play store pour Sauvegarde/restauration de vos SMS sur Android, en utilisant les définitions API -appels pour extraire/restaurer des messages de/vers votre appareil Android. Mais malheureusement, je n'en ai vu aucun capable de convertir d'autres formats. Comme certains d'entre eux stockent la sauvegarde des SMS au format XML, vous pourriez être en mesure de produire manuellement un tel fichier XML pour l'importer (bien que I penserait que c'est trop de frais généraux).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X