android opensource: 如何恢复出厂设置?
在手机安装了很多垃圾应用以及手机反应迟钝之后,除了更换一部新手机之外,我想还有一个好办法就是“恢复出厂设置”。
那麽,android 是如何实现的呢?
先看一个 demo,没有那麽惊艳,只是说明问题。
看一下效果图,这样会直观一点。
第一张图,是我自己的布局,后两张图是 android 自己的东西。
点击 “恢复出厂设置”会相继跳到相关的页面。
实现代码:
package mark.zhang;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class RestoreFactorySettingsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onRestoreSetting(View v) {
Intent intent = new Intent();
String pkgName = "com.android.settings";
String className = "com.android.settings.MasterClear";
// methond 1
// intent.setClassName(pkgName, className);
// methond 2
ComponentName cn = new ComponentName(pkgName, className);
intent.setComponent(cn);
startActivity(intent);
}
}
代码 so easy,但是要想把整个流程弄明白,没有那麽简单。
从代码上我们可以看出,直接调用 com.android.settings.MasterClear.java 这个 Activity 哟!
具体调用流程,推荐:http://webcenterol.iteye.com/blog/1231224
这里提醒几点,共享:
1. MasterClear 发送一个广播
sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
这个广播被 MasterClearReceiver(继承自 BroadcastReceiver),注册信息可以见:源码路径/frameworks/base/core/res/AndroidManifest.xml
2. MasterClear 中的 onActivityResult 与com.android.settings.ConfirmLockPattern.java 相关(可以自行研究)。