Я новый пользователь андроида. Только сегодня перешел с нокии на андроид. Я искал различные решения для передачи моих смс (только текстовые сообщения) с моей старой Nokia на мой новый Android (Galaxy Ace с Android 2.3).
Изучив свой ноутбук, я обнаружил, что синхронизированные (с использованием Nokia PC Suite) смс хранятся в AppData в виде файла sqlite.
Могу ли я перенести все это на свой новый Android? Любое приложение для этого?
Ну я решил проблему. Документирование решения здесь для будущих ссылок.
Используя любой менеджер sqlite (я использовал плагин firefox - SQlite Manager), экспортируйте базу данных в формат XML (как правило, любой менеджер баз данных имеет опции для экспорта базы данных в форматы csv, xls и xml).
Если ваш sqlite был сгенерирован с помощью синхронизации nokia pc-suite, вы получите xml, например:
<?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>
Затем вы можете использовать следующий php-скрипт, чтобы выполнить преобразование для создания сценария формата xml, необходимого для приложения резервного копирования и восстановления 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", ' ', $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);
?>
Следует отметить один момент:
Вы должны вручную написать count
атрибут в smses
теге. Просто проверьте количество строк в сгенерированном xml-файле и вычтите из него 4 ИЛИ просто напишите последнее эхо-целое число скриптом
Теперь просто отправьте это на свой Android и восстановите с помощью приложения SMS Backup & Restore . Бинго! вы сделали!
Это не так просто, как скопировать базу данных SQLite на новое Android-устройство, так как внутренние структуры будут различаться (даже между версиями Android). В магазине Play есть множество приложений для резервного копирования/восстановления SMS на Android с использованием определенных API -вызовов для извлечения/восстановления сообщений с/на ваше устройство Android. Но к сожалению я не видел ни одного способного конвертировать из других форматов. Поскольку некоторые из них хранят резервную копию SMS в формате XML, вы можете вручную создать такой XML-файл для импорта (хотя я думаю, что это требует больших накладных расходов).
гопи1410
Иззи
гопи1410