如何通过MIUI备份功能实现不同手机之间应用数据迁移?

本文详细介绍了如何将旧手机的通话记录和联系人数据迁移到新手机,包括备份文件操作、代码实现以及注意事项,特别适用于单应用数据恢复和跨设备迁移。
摘要由CSDN通过智能技术生成

场景

换了手机之后,把旧手机的联系人、通话记录等数据迁移到新手机上

思路

1. 使用新手机和旧手机分别备份通话记录,不同手机备份文件所在位置可能不一样,一般在MIUI/backup/AllBackup/yyyyMMdd_HHmmss类似的目录下,把文件分别复制到new目录和old目录下
2. 读取旧备份文件的'apps'前的字节,读取新备份文件'apps'前的字节
3. 将旧备份文件'apps'前的字节替换为新备份文件'apps'前的字节
4. 保存生成新的备份文件

代码实现

import shutil

# 读取指定字符串前的字节,并转换为16进制展示
def read_file_before_string(file_path, string):
    with open(file_path, 'rb') as file:
        data = file.read()
        index = data.find(string.encode())  # 查找特定字符串的位置
        if index != -1:
            data = data[:index]  # 截取特定字符串之前的数据
    return data.hex()  # 转换为十六进制形式

# 读取原备份文件,替换指定字节后并保存为新的备份文件
def replace_and_save(file_path, string, new_content, new_file_path):
    with open(file_path, 'rb') as file:
        data = file.read()
        index = data.find(string.encode())  # 查找特定字符串的位置
        if index != -1:
            new_data = new_content + data[index:]  # 替换内容
            with open(new_file_path, 'wb') as new_file:
                new_file.write(new_data)  # 写入新文件

# 复制文件
def copy_file(source_file, destination_dir):
    shutil.copy2(source_file, destination_dir)


old_bak_file_path=r'D:\miui\old\通话记录(com.android.contacts).bak' # 旧手机的备份文件路径
new_bak_file_path=r'D:\miui\new\通话记录(com.android.contacts).bak' # 新手机的备份文件路径
string='apps'  # 请勿更改
new_content=bytes.fromhex(read_file_before_string(new_bak_file_path,string))  # 读取新备份文件的miui头字节
output_bak_file_path=r'D:\miui\output\通话记录(com.android.contacts).bak'  # 最终生成的适配新手机的备份文件
replace_and_save(old_bak_file_path, string, new_content, output_bak_file_path)

# 复制新手机备份中的descript.xml到out目录
new_descript_file_path=r'D:\miui\new\descript.xml'
destination_dir=r'D:\miui\output'
copy_file(new_descript_file_path,destination_dir)

执行之后,重要提示:恢复的APP会覆盖当前已经安装的APP的数据,请恢复前再次备份!!!`**

  • 把out目录下即可拿到适配新手机的两个文件descript.xml通话记录(com.android.contacts).bak复制到手机
  • 把新手机备份MIUI/backup/AllBackup/yyyyMMdd_HHmmss的文件,替换为生成的文件
  • 回到数据恢复界面
  • 点击恢复即可

总结

  • 适合单应用的数据恢复
  • 适合旧手机向旧手机或旧手机向新手机进行数据迁移
  • 不适合微、qq,miui备份时做了处理

    本文由【产品经理不是经理】gzh 同步发布,欢迎关注

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值