发到知乎竟然被删掉,我也不知道我到底违反了哪条。唉,别人的毕竟是别人的。虽然博客园也是别人的
前言
我对聊天记录的备份比较执着,也在这上面折腾过不少。碰到过不少令人头疼的麻烦,在这里分享一下经验。
关于聊天记录的备份、导出,你的手机可能是以下几种情况的一种:
- 手机已经ROOT
- 手机没有ROOT但是已经解锁OEM
- 手机没有ROOT也没有解锁OEM
- 手机原生支持带应用数据的备份软件(比如华为)
原理
安卓QQ的聊天记录储存于
data\data\com.tencent.mobileqq\databases\你的QQ.db
这个文件就是我们备份和导出的核心,只要能拿到这个文件剩下的工作就简单了。
情况1
这种情况最为简单,直接访问这个目录取出文件即可
情况2
这种情况也比较简单,因为已经解锁OEM,所以在ROOT时并不会再清除数据。那么只要在获取ROOT权限后操作就和情况1一样了
情况3
[2020.04.04更新]在QQ官方更新了聊天记录备份功能之后,可以先将数据备份到电脑,然后再把数据导入到一个root过的设备(比如模拟器),再提取db文件。
也可以用之前的方法如下。
比较难,当初我就是这种情况。网上搜了大半天也没有个结果,然后隔一段时间再搜还是没有。终于,在无数次探索失败后,集各家之所长,融会贯通搜索到的东西,总结出一套解决办法。
解决的思路是利用ADB命令行来备份整个apk和应用数据。ADB命令里有这样一个功能,但是必须是应用允许备份才可以。不幸的的是QQ现在已经把这个功能给关掉了,不过我们可以通过降级用以前版本的QQ来实现这个功能(你也可以反编译QQ把那个功能给打开,如果你愿意的话)。然而,降级安装并不是直接就能安装的。最近看到有个应用叫核心破解,好像是解决这个问题的。我们这里说另一个方法。还是利用ADB,有个命令是卸载应用的同时保留原有数据,就是用这个命令先把原来的QQ卸载掉,但是还会保存原有数据,再安装支持备份的那个版本的QQ,再利用ADB命令备份应用和应用数据。拿到应用数据后找到情况1的那个文件。
具体的操作如下
1.卸载QQ但保留数据
adb -d uninstall com.tencent.mobileqq
[2020/02/16]更新:今天我想降级安装微信翻到这篇文章发现上面的命令写错了(希望没有坑害到人)正确的命令应该是
adb uninstall [-k] <package> - remove this app package from the device ('-k' means keep the data and cache directories)
对于QQ应该是
adb uninstall -k com.tencent.mobileqq
卸载后再次安装可能还是会出现应用程序未安装的提示(反正我是这样),重启一下手机就可以了
2.安装支持备份的QQ版本
3.备份应用及数据
adb backup com.tencent.mobileqq
另外,我提供的这个版本的QQ不仅支持ADB备份,而且还内置聊天记录导出为TXT功能。真不知道为什么后来腾讯把这个功能给删掉了。我们也可以通过降级安装的方法用这个QQ的官方导出功能。
从db文件导出聊天记录
这个网上有资料,但是比较少,感兴趣的可以搜一下。当初我折腾这个也是一波三折。我把这个功能写成了一个python脚本,可以很方便的使用了。当然你要会一点python。
roadwide/qqmessageoutputgithub.com
如果觉得不错也请给个star鼓励一下啊~
情况4
利用系统自带的备份应用,备份后找到db文件,然后用上述脚本就可以导出了。
总结
说实话,我写的比较简略,没有一些基础知识可能看不懂。但是我觉得我写的是最全的,因为情况3我真的找了很久都没有找到解决办法。所以,如果你看不懂,请学习相关的知识后再来看。我这里提供的比较重要的是思路、老版本QQ和导出脚本,其他的很多东西没办法一一讲到,毕竟大家的基础都不一样。当然,也欢迎评论指正。
最后,最最重要的一点是数据无价!任何一步操作前请明白你在干什么,知道会有怎样的后果,事先请通过其他方法备份一些你觉得非常重要的聊天记录、图片等,做好万全的准备。
最后祝大家都能备份或者导出自己珍贵的聊天记录