作者: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
接下来看看"ERASE EVERYTHING" 按钮 监听事件实现,
doMasterclear()实现:
从代码可以看到此函数主要是发送广播,根据ACTION_MASTER_CLEAR查找是哪个java类广播接手处理这个广播,发现是MasterClearReceiver.java,接下来就是RecoverySystem.java类去调用方法rebootWipeUserData(context, shutdown, reason)