Übertragen von Nachrichten an Android von einer SQLite-Datenbank auf meinem Laptop

Ich bin ein neuer Android-Benutzer. Ich bin heute von Nokia auf Android umgestiegen. Ich habe nach verschiedenen Lösungen gegoogelt, um meine SMS (nur Textnachrichten) von meinem alten Nokia auf mein neues Android (Galaxy Ace mit Android 2.3) zu übertragen.

Nachdem ich meinen Laptop untersucht hatte, stellte ich fest, dass die synchronisierten (mit der Nokia PC Suite) SMS in AppData als SQLite-Datei gespeichert waren.

Kann ich all diese auf mein neues Android übertragen? Irgendeine App dafür?

Antworten (2)

Nun, ich habe das Problem gelöst. Dokumentieren Sie die Lösung hier für zukünftige Referenzen.

Exportieren Sie die Datenbank mit einem beliebigen SQLite-Manager (ich habe das Firefox-Plugin SQLite Manager verwendet) in das XML-Format (im Allgemeinen hat jeder DB-Manager Optionen zum Exportieren der Datenbank in den Formaten csv, xls und xml).

Wenn Ihr SQLite von nokia pc-suite sync generiert wurde, erhalten Sie eine XML-Datei wie:

<?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>

Dann können Sie das folgende PHP-Skript verwenden, um die Konvertierung durchzuführen, um das Skript im XML-Format zu generieren, das von der SMS Backup and Restore App benötigt wird .

<?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);

?>

Ein Punkt ist zu beachten:

Sie müssen das countAttribut manuell in das smsesTag schreiben. Überprüfen Sie einfach die Anzahl der Zeilen in Ihrer generierten XML-Datei und subtrahieren Sie 4 davon ODER schreiben Sie einfach die letzte vom Skript zurückgegebene Ganzzahl

Senden Sie dies jetzt einfach an Ihr Android und stellen Sie es mit der SMS Backup & Restore App wieder her . Bingo! du bist fertig!

Es ist nicht so einfach, die SQLite-Datenbank auf Ihr neues Android-Gerät zu kopieren, da sich die internen Strukturen unterscheiden (sie tun dies sogar zwischen Android-Versionen). Es gibt viele Apps im Play Store zum Sichern/Wiederherstellen Ihrer SMS auf Android, die definierte API -Aufrufe zum Extrahieren/Wiederherstellen von Nachrichten von/auf Ihrem Android-Gerät verwenden. Aber leider habe ich keine gesehen, die in der Lage wäre, andere Formate zu konvertieren. Da einige von ihnen das SMS-Backup im XML-Format speichern, können Sie möglicherweise eine solche XML-Datei für den Import manuell erstellen (obwohl ich denke, dass dies zu viel Aufwand ist).

Ok. Gibt es also eine andere Möglichkeit, meine Nachrichten von Nokia auf Android zu übertragen?
Einige Geräte verfügen über einen "Migrationsassistenten". Nicht sicher über das Ace und nicht sicher, wie es in der App-Schublade heißt ... Vielleicht möchten Sie einen Blick auf das SBP-Migrationstool werfen, das behauptet, Kontakte, SMS und Lesezeichen von Windows Mobile- und Symbian-Geräten auf Android zu migrieren.
trotzdem danke. Ich denke, ich muss ein XML aus dem SQLite generieren.