解决方案 »

  1.   


    要想实现恢复出厂设置,首先你的应用要有管理员权限,这个是用户授予你的
    你可以看一下API文档
    http://www.android-doc.com/guide/topics/admin/device-admin.html
      

  2.   

    我用的是这上面的例子
    而且,它并不重启,尽管是执行了,最后一直停留在正在关机的dialog画面,请问你是像那个例子那样做的吗?
      

  3.   

    have you declared this activity in your AndroidManifest.xml? 没加权限吧
      

  4.   

    java.lang.SecurityException: Not allowed to start service Intent { act=com.android.internal.os.storage.FORMAT_AND_FACTORY_RESET cmp=android/com.android.internal.os.storage.ExternalStorageFormatter } without permission android.permission.MASTER_CLEAR提示我需要android.permission.MASTER_CLEAR,但是这是系统级应用的权限,不知道LZ怎么加的我是这样写的:
    Intent intent = new Intent("com.android.internal.os.storage.FORMAT_AND_FACTORY_RESET");
                    ComponentName COMPONENT_NAME
                            = new ComponentName("android", "com.android.internal.os.storage.ExternalStorageFormatter");
                        intent.setComponent(COMPONENT_NAME);
                        startService(intent);
      

  5.   

    1、添加权限:    <uses-permission android:name="android.permission.MASTER_CLEAR" />2、不能直接启动MasterClear.java这个类。系统不许可。靠发送广播的机制吧。sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));祝你好运!更多内容参见:http://www.drovik.com
      

  6.   


    次代码就是从Android2.2源码中摘录的 
      

  7.   

    此代码参考2.3 settings,但是出现的是权限问题。
      

  8.   

    我现在用的SDK都是4.2的了.....
      

  9.   


    packages\apps\Settings\src\com\android\settings\MasterClearConfirm.java
        private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {        public void onClick(View v) {
                if (Utils.isMonkeyRunning()) {
                    return;
                }            if (mEraseInternal) {             
                    Environment.setDefaultStorageType(Environment.StorageType.EMMC);
                    try {
                         Thread.sleep(200);
                    } catch (Exception exp) {
                    }
                    Intent i = new Intent("android.intent.action.MASTER_CLEAR");
                    i.putExtra("IS_FORMAT", mEraseInternal);
                    getActivity().sendBroadcast(i);
        } else {
                    /* move format SD card action to method formateSDCard() */
                    getActivity().sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
                }        }
        };广播处理是在framework层frameworks\base\services\java\com\android\server\MasterClearReceiver.java至于相关权限在网上可以搜索下
      

  10.   

    我到现在还不明白,它擦除的是哪里的数据,是SdCard里面的数据吗?
      

  11.   

    if (mEraseSdCard) {
                    Intent intent = new Intent(ExternalStorageFormatter.FORMAT_AND_FACTORY_RESET);
                    intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
                    getActivity().startService(intent);
                } else {
                    getActivity().sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
                    // Intent handling is asynchronous -- assume it will happen soon.
                }
    上面代码是什么意思?判断SdCard是否存在?如果存在就Erase?不存在呢?发的广播是干嘛用的?
      

  12.   


    if (mEraseSdCard)是判断LZ出厂化时,是否勾选了个格式内置sd卡选项。
    我不是说了吗   广播处理是在framework层frameworks\base\services\java\com\android\server\MasterClearReceiver.java    至于具体擦除那些东西是由底层驱动做的事情