如何将Iphone的短信迁移到华为手机的方法。
短信迁移
传统的办法是使用isms2droid,但是在写本文时isms2droid无法使用,可能与谷歌禁止华为安装谷歌服务有关。因此采用了另一种方法。
注意:本文中提到的有些网站需要访问国外网站才可以访问。
第一步
还是按照isms2droid的方法,提取到3d0d7e5fb2ce288813306e4d4636395e047a3d28
文件,一定要注意,在备份Iphone到本机到时候不要加密备份。
- iPhone 连到电脑,采用非加密备份。
- 到(Windows)
C:Users[YourUsername]AppDataRoamingApple ComputerMobileSyncBackup
或者(OS X)~/Library/Application Support/MobileSync/Backup/
(你得在 Finder 中使用Cmd Shift G
打开前往文件夹
才能进入该目录) 搜索对应文件。 - 找到
3d0d7e5fb2ce288813306e4d4636395e047a3d28
文件复制出来。
第二步
其实3d0d7e5fb2ce288813306e4d4636395e047a3d28
就是一个SQLite3的dump文件,因此可以导入它然后将其输出成“SMS Backup and Restore”的xml格式文件。
本文采用的是这篇文章所提供的php脚本,不过它的脚本存在一些bug,导出的短信时间存在问题(这个问题在这篇文章里也有提到过)。因此我作了一些修改,代码在gist。
也可以直接复制这里的:
代码语言:php复制#!/usr/bin/php5
<?php
if (count($argv) <> 2) {
print "Usage: ".$argv[0]." iPhone-SMS-DB (Usually 3d0d7e5fb2ce288813306e4d4636395e047a3d28.*)n";
exit -1;
}
$DBfile = $argv[1];
if (! is_readable($DBfile)) {
print "File $DBfile is not readable!n";
exit -2;
}
try {
$sqlite = new SQLite3($DBfile);
} catch (Exception $exception) {
echo '<p>There was an error connecting to the database!</p>';
echo $exception->getMessage();
exit -3;
}
$query = "
SELECT datetime(message.date / 1000000000, 'unixepoch', ' 31 years') AS Datum,
CAST(strftime('%s', datetime(message.date / 1000000000, 'unixepoch', ' 31 years')) AS INT) * 1000 AS Date,
message.is_from_me,
handle.id AS Contact,
message.text,
message.service
FROM message, handle
WHERE message.handle_id = handle.ROWID;
";
$sqliteResult = $sqlite->query($query);
if (!$sqliteResult) {
// the query failed and debugging is enabled
echo "There was an error in query: $queryn";
echo $sqlite->lastErrorMsg();
exit -4;
}
$smses = array();
while ($record = $sqliteResult->fetchArray()) {
$sms = array();
$sms['Datum'] = $record['Datum'];
$sms['Date'] = $record['Date'];
$sms['is_from_me'] = $record['is_from_me'];
$sms['Contact'] = $record['Contact'];
$sms['text'] = $record['text'];
$sms['service'] = $record['service'];
$smses[] = $sms;
}
$sqliteResult->finalize();
$sqlite->close();
print "<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>n";
print "<?xml-stylesheet type='text/xsl' href='sms.xsl'?>n";
print "<smses count="".count($smses)."">n";
foreach ($smses as $key => $sms) {
$body = $sms['text'];
$body = str_replace('&', '&', $body);
$body = str_replace('"', '"', $body);
$body = str_replace("n", ' ', $body);
print ' <sms ';
print 'address="';
print $sms['Contact'];
print '" date="';
print $sms['Date'];
print '" type="';
print $sms['is_from_me'];
print '" body="';
print $body;
print '" readable_date="';
print $sms['Datum'];
print '" service="';
print $sms['service'];
print '" />';
print "n";
}
print "</smses>n";
执行:
代码语言:shell复制php iphone-sms-xml.php 3d0d7e5fb2ce288813306e4d4636395e047a3d28 > sms.xml
得到sms.xml文件。
第三步
在你的华为手机上安装“SMS Backup and Restore”,需要注意的是这个软件在华为应用市场上是找不到的,你需要自行找一个地方下载APK文件安装。我是在这个网站下载到的。
第四步
把前面的sms.xml传到你的手机上,然后运行“SMS Backup and Restore”恢复短信。
恢复过程中会提示你把 “SMS Backup and Restore” 作为默认短信应用,照做就是。
恢复完成后,打开系统自带的短信,把它设置会默认短信应用即可。
大功告成!
音乐、铃声、录音迁移
步骤
1)把你的 iPhone 插到 Mac 上
2)打开 Mac 上的 音乐
3)选择 文件 - 资料库 - 导出资料库,随便选一个位置保存资料库 xml 文件
- 我有点不太确定,也可能是通过 Mac 备份 iPhone 到本地(非加密)产生的了下一步的文件,都试试吧
4)导出后,打开 Finder ,进入目录 音乐 - iTunes - iTunes Media,你会看到这么几个目录:
- Apple Music,你在 iPhone 上购买 / 收藏的音乐,这个这是一个清单,没有实体音乐
- Downloads-Music,这个是你 iPhone 上下载的音乐文件
- Music,不太清楚,可能是你上传到 iPhone 的音乐文件
- Tones,铃声文件,是 m4r 格式的,也许华为不认,你可以网上找工具转换成 mp3 格式
- Voice Memos,语音备忘录,也就是录音文件
对应的华为目录
打开华为手机的 文件管理 - 内部存储:
- 录音文件,放到 Sounds 目录下
- 通话录音文件,放到 Sounds - CallRecord 目录下
- 音乐文件,放到 Music 目录下