资讯详情

资讯详情

微信/QQ 聊天图片视频怎么导出到电脑?我写了个免费离线的安卓备份工具

换手机时最麻烦的不是通讯录和照片而是攒了几年的聊天文件图片、视频、语音、文档散落在微信、QQ、TIM、企业微信的十几个目录里。聊天记录本体可以用官方的迁移功能搬走但聊天产生的媒体文件官方一直没给批量导出这条路。这篇文章先把这个技术问题讲清楚——文件到底存在哪、为什么常规方法扫不全、权限该怎么取舍——然后给出我的离线方案以及我为此写的一个小工具最后老实交代它做不到什么。写给遇到同样问题的朋友也写给同行。一、聊天文件都藏在哪存储路径的实际分布动手之前先搞清楚一件事微信、QQ 的聊天文件不是集中存放的而是按类型、账号、时间散落在多个目录。以较新版本的微信、QQ 为例不同版本路径有差异仅示意来源常见位置特点微信 图片/视频/语音Android/media/com.tencent.mm/MicroMsg/账号哈希/image、video、voice2目录名带账号哈希旧版在Android/data下还有 image2 缓存QQ 语音/图片Android/data/com.tencent.mobileqq/Tencent/MobileQQ/QQ号/...大量子目录按哈希命名语音在 ptt 等目录TIMAndroid/data/com.tencent.tim/Tencent/TIM/...结构与 QQ 类似企业微信Android/data/com.tencent.wework/...混合结构部分文件无扩展名各类文档Download/应用名/或应用私有目录命名不规则常被重命名成哈希值三个共同的麻烦大本营在Android/data和Android/media下——Android/data从 Android 11 起是受限目录普通文件管理器和媒体库接口基本无权访问大量隐藏目录以.开头的目录和文件如语音的.snd片段在文件管理器里默认不可见文件名哈希化 .nomedia很多图片视频没有规范扩展名或所在目录放了.nomedia系统媒体库直接不收录。二、为什么系统媒体库和普通文件管理器帮不上忙Android 的媒体库MediaStore只在文件被扫描入库时建立索引.nomedia目录、无扩展名文件、受限目录里的内容都不在其覆盖范围内。也就是说用相册 API 或 SAF 去枚举天然就漏掉一大块。官方给普通用户的路只有两条在聊天窗口里一张张长按另存或者用电脑版微信做整体备份。都不是批量的体验QQ 的情况只多不少。想在系统层面对付这件事主流选择其实只有三种root / Shizuku权限最足但门槛高不适合普通用户ADB 桥接要连电脑开调试流程对小白不友好MANAGE_EXTERNAL_STORAGE所有文件访问 逐层遍历一步授权之后纯本机搞定这是大多数同类工具的选型也是我的方案。三、我的方案离线扫描 按来源和类型归类思路不复杂用所有文件访问权限对存储卷做逐层遍历按路径特征把文件归到来源应用 × 文件类型两个维度再交给用户勾选导出。归类规则用关键词匹配即可覆盖绝大多数情况示意代码// 示意按路径特征把文件归到来源应用简化版 val SOURCE_RULES listOf( Rule(微信, listOf(com.tencent.mm, MicroMsg)), Rule(QQ, listOf(com.tencent.mobileqq, MobileQQ)), Rule(TIM, listOf(com.tencent.tim, Tencent/TIM)), Rule(企业微信, listOf(com.tencent.wework)), ) fun classify(path: String): Rule? SOURCE_RULES.firstOrNull { r - r.keywords.any { path.contains(it, true) } }扫描结果按微信 / QQ / TIM / 企业微信和图片 / 视频 / 语音 / 文档两个维度分类浏览勾选后导出到Download/下的独立目录之后拷电脑、传网盘都随意。我把这套方案做成了一个安卓小工具——皮皮聊天备份APK 约 5MBAndroid 8.0夸克网盘下载https://pan.quark.cn/s/5305f9e21119 功能介绍和常见问题见 beifen.pipiapp.cn 。使用就三步安装后授予所有文件访问权限 → 扫描 → 勾选导出。四、权限与架构的取舍写给同行1. 不申请 INTERNET 权限隐私不能只靠声明Android 上有个更硬的做法整个 APK 不声明android.permission.INTERNET清单里只有存储权限uses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE / !-- 注意没有 INTERNET 权限。进程在网络层面发不出任何数据 --没有网络权限不上传就从承诺变成了架构约束——抓包什么都抓不到因为它连发起请求的能力都没有飞行模式下也能完整工作。2. 为什么敢用 MANAGE_EXTERNAL_STORAGE这个权限确实大大权限的正当性要靠另外两件事支撑一是必要性——.nomedia、隐藏目录和受限路径决定了媒体库 API 覆盖不全只有逐层遍历能扫干净二是收敛——权限只用于本机读文件配合上一条无网络权限扫描结果在物理上出不了这台手机。3. 长扫描的崩溃恢复几千上万个文件的中途进程被系统杀掉是常态而不是意外。所以扫描状态要做持久化异常退出后重新打开回到安全状态不卡死、不串状态。对备份工具来说稳定性是底线比多一个花哨功能重要。4. 体积与依赖5MB 的 APK 意味着没有广告 SDK、没有 WebView、没有全家桶依赖——这也顺带回答了免费工具图什么它没有需要变现的东西。五、它不能做什么一个工具的可信度一半来自老实交代边界不能恢复已删除的内容只扫描手机里现存的文件文件删了就是没了这不是数据恢复软件备份的是文件不是聊天记录数据库不做微信聊天记录的迁移只做把聊天产生的媒体文件批量导出这一件事仅用于备份本人数据只处理你自己手机上的文件不支持也不鼓励查看别人的聊天内容。六、常见问题Q1微信聊天图片怎么批量导出到电脑扫描后按图片类型筛选、勾选导出文件统一落在Download/下的导出目录再用数据线拷到电脑。不用连电脑版微信也不用一张张另存。Q2QQ / TIM / 企业微信的文件支持吗支持四个来源并列按来源分类浏览时可以单独切页签导出流程一致。Q3视频导出后画质会变吗不会。按原始文件原样复制不转码不压缩。Q4能找回已删除的聊天图片吗不能只扫现存文件见第五节边界说明。Q5会上传我的聊天记录吗不会。APK 不含网络权限系统层面发不出数据断网也能用。七、用 AI 辅助开发的一点感受这个项目从界面到扫描逻辑是借助 AI 完成的。体会是AI 负责把想法快速变成能跑的代码但要不要网络权限权限怎么收敛边界划在哪这些取舍得自己想清楚再落进设计。一个人加 AI把以前觉得启动成本太高的小工具真正做完这在几年前不敢想。后续我单独写一篇开发过程的技术复盘。八、总结微信/QQ 聊天文件难备份的根源散落在Android/data、Android/media的哈希目录里还有.nomedia和隐藏目录让媒体库扫不全系统层面的可行解MANAGE_EXTERNAL_STORAGE逐层遍历按来源应用 × 文件类型归类架构上用不申请 INTERNET 权限把隐私做成约束而不是承诺配崩溃恢复保长扫描稳定工具地址APK 约 5MBAndroid 8.0https://pan.quark.cn/s/5305f9e21119 介绍页 beifen.pipiapp.cn 。如果你也在换机或想归档几年的聊天图片视频欢迎按上面的思路自己折腾或直接用现成工具用着有问题或希望支持新的来源评论区交流。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →