Android恢复出厂设置代码+脚本

/**
 * 恢复出厂设置,需要系统权限,以及系统签名 android:sharedUserId="android.uid.system"
 */
public void resetSystem() {
    Intent intent = new Intent("android.intent.action.FACTORY_RESET");
    //8.0
    // intent = new Intent("android.intent.action.MASTER_CLEAR");
    //9.0
    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
    intent.setPackage("android");

    //以上区分不同系统
    intent.putExtra("android.intent.extra.REASON", "FactoryMode");
    //是否擦除SdCard
    intent.putExtra("android.intent.extra.WIPE_EXTERNAL_STORAGE", true);
    intent.putExtra("android.intent.extra.EXTRA_WIPE_ESIMS", true);
    sendBroadcast(intent);
}

恢复出厂设置的脚本

#/bin/sh

rm -rf /cache/recovery/command
echo "--wipe_data" > /cache/recovery/command
echo "--wipe_cache" >> /cache/recovery/command
sync
sync
sleep 1
sync
sync
reboot recovery

把以上脚本写到一个 reset.sh 文件中
push reset.sh 到 /data/local/tmp/
adb shell sh /data/local/tmp/reset.sh

恢复出厂设置的流程
(1)用户在系统设置中选择了“恢复出厂设置”。
(2)Android 系统在/cache/recovery/command 中写入“–wipe_data”。
(3)设备重启后发现了 command 命令,于是进入 recovery。
(4)recovery 将在 BCB(bootloader control block)中写入“boot-recovery”和“–wipe_data”具体是在 get_args()函数中——这样即便设备此时重启,也会再进入 erase 流程。
(5)通过 erase_volume 来重新格式化/data。
(6)通过 erase_volume 来重新格式化/cache。
(7)finish_recovery 将擦除 BCB,这样设备重启后就能进入正常的开机流程了。
(8)main 函数调用 reboot 来

猜你喜欢

转载自blog.csdn.net/zhangqi6627/article/details/107683768