Android7.0恢复出厂设置代码流程分析

作者:lefty蓝
时间:2018-5-3 17:04:35

首先我们知道,Android7.0系统的恢复出厂设置处在"Settings"系统应用的personal区域Backup&reset中看到ERASE EVERYTHING字符串,不多说,先搜索下"ERASE EVERYTHING"字符串,命令grep -ri "ERASE EVERYTHING" packages/apps/Settings/ :packages/apps/Settings/res/values/strings.xml: <string name="master_clear_final_button_text">Erase everything</string>

查找加载这个字符串的xml文件:grep -ri "master_clear_final_button_text" packages/apps/

packages/apps/Settings/res/layout/master_clear_confirm.xml: android:text="@string/master_clear_final_button_text"

查找加载master_clear_confirm.xml的java源码文件路径:
根据id再搜索,找到java源文件:
android/packages/apps/Settings/src/com/android/settings/MasterClearConfirm.java
Android7.0恢复出厂设置代码流程分析

接下来看看"ERASE EVERYTHING" 按钮 监听事件实现,

Android7.0恢复出厂设置代码流程分析

Android7.0恢复出厂设置代码流程分析

doMasterclear()实现:
Android7.0恢复出厂设置代码流程分析
从代码可以看到此函数主要是发送广播,根据ACTION_MASTER_CLEAR查找是哪个java类广播接手处理这个广播,发现是MasterClearReceiver.java,接下来就是RecoverySystem.java类去调用方法rebootWipeUserData(context, shutdown, reason)
Android7.0恢复出厂设置代码流程分析