4 votos

La transferencia de mensajes para android desde una db sqlite en mi laptop

Soy un nuevo usuario de android. Me cambié de nokia para android hoy en día sólo. Sido el google para varias soluciones para la transferencia de mi sms (mensajes de texto) desde mi viejo nokia a mi nuevo Android (Galaxy Ace con Android 2.3).

Después de explorar mi laptop, me encontré con el sincronizados(el uso de Nokia PC Suite) sms se almacenan en AppData como un archivo sqlite.

¿Puedo transferir todos estos a mi nuevo Android? Alguna app para esto?

2voto

gopi1410 Puntos 151

Bueno he resuelto el problema. Documentar la solución aquí para futuras referencias.

El uso de cualquier sqlite manager (he utilizado el plugin de firefox - SQlite Manager), la exportación de la base de datos en formato XML (en general, cualquier gestor de bases de datos tiene opciones para exportar la base de datos en formato csv, xls y xml).

Si su sqlite fue generado por nokia pc suite sync, usted podría obtener un xml como:

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

A continuación, puede utilizar el siguiente script de php para hacer la conversión al generar el xml de formato de secuencia de comandos requeridos por el SMS de Copia de seguridad y Restaurar la Aplicación.

<?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 punto a destacar:

Usted tiene que escribir manualmente la count de atributo en la smses etiqueta. Sólo tienes que comprobar el número de líneas en el archivo xml generado y restar 4 a partir de ella O simplemente escribir la última eco entero por la secuencia de comandos

Ahora acaba de enviar esto a su android y restaurar el uso de los SMS de Copia de seguridad Y Restauración de la Aplicación. Bingo! listo!

1voto

Izzy Puntos 45544

No es tan sencillo como copiar la base de datos SQLite para tu nuevo dispositivo Android, como las estructuras internas serán diferentes (incluso entre versiones de Android). Hay un montón de aplicaciones en la play store para Copia de seguridad/Restauración de SMS en Android, usando definidas API-llamadas para extraer / restaurar los mensajes de su dispositivo Android. Pero, por desgracia vi a ninguno capaz de convertir a partir de otros formatos. Como algunos de ellos almacenar los SMS de Copia de seguridad en Formato XML, usted podría ser capaz manualmente producir un archivo XML para importar (aunque yo creo que está mucho sobrecarga).

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X