以下两种恢复出厂设置方案适用于8.0以上平台

方案一,主要是采用intent广播接口方式。

方案二,主要是直接调引用RecoverySystem类。

两种方案均验证有效。

方案一:

// 对应hide类型的intent的TAG定义:

public static final String EXTRA_REASON = "android.intent.extra.REASON"; public static final String EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE";

public static final String EXTRA_WIPE_ESIMS = "com.android.internal.intent.extra.WIPE_ESIMS";

public static final String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET";

//是否清除SDCard和ESim数据变量定义:

private boolean mEraseSdCard=false; //是否清除SDCard上的数据,默认为false,具体看有无外部sdcard来决定

private boolean mEraseEsims=true;//是否清除ESIMS上的数据,默认为true

//恢复出厂设置接口定义:

private void doMasterClear() {Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);intent.setPackage("android");intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);intent.putExtra(Intent.EXTRA_REASON, "MasterClearConfirm");intent.putExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, mEraseSdCard);intent.putExtra(Intent.EXTRA_WIPE_ESIMS, mEraseEsims);getActivity().sendBroadcast(intent);// Intent handling is asynchronous -- assume it will happen soon.
}

或者直接改写成:

private void doMasterClear(){boolean mEraseSdCard = false;boolean mEraseEsims = true;Intent intent = new Intent("android.intent.action.FACTORY_RESET");Log.i(TAG, "doMasterClear mEraseSdCard =" + mEraseSdCard + " | mEraseEsims=" + mEraseEsims);intent.setPackage("android");intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);intent.putExtra("android.intent.extra.REASON", "MasterClearConfirm");intent.putExtra("android.intent.extra.WIPE_EXTERNAL_STORAGE", mEraseSdCard);intent.putExtra("com.android.internal.intent.extra.WIPE_ESIMS", mEraseEsims);mContext.sendBroadcast(intent);
}    

方案二:

直接调用RecoverySystem类的rebootWipeUserData接口

示例如下:

private boolean mWipeExternalStorage = false;
private boolean mWipeEsims = true;private void doMasterClear2(){Log.i(TAG, "doMasterClear2");// The reboot call is blocking, so we need to do it on another thread.Intent intent = new Intent();final boolean shutdown = false; final String reason = "MasterClearConfirm"; final boolean forceWipe = false;   Thread thr = new Thread("Reboot") {@Overridepublic void run() {try {RecoverySystem.rebootWipeUserData(mContext, shutdown, reason, forceWipe, mWipeEsims);Log.wtf(TAG, "Still running after master clear?!");} catch (IOException e) {Slog.e(TAG, "Can't perform master clear/factory reset", e);} catch (SecurityException e) {Slog.e(TAG, "Can't perform master clear/factory reset", e);}}};if (mWipeExternalStorage || mWipeEsims) {// thr will be started at the end of this task.new WipeDataTask(mContext, thr).execute();} else {thr.start();}
}
private class WipeDataTask extends AsyncTask<Void, Void, Void> {private final Thread mChainedTask;private final Context mContext;//private final ProgressDialog mProgressDialog;public WipeDataTask(Context context, Thread chainedTask) {mContext = context;mChainedTask = chainedTask;}@Overrideprotected void onPreExecute() {}@Overrideprotected Void doInBackground(Void... params) {Slog.w(TAG, "Wiping adoptable disks");if (mWipeExternalStorage) {StorageManager sm = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);sm.wipeAdoptableDisks();}return null;}@Overrideprotected void onPostExecute(Void result) {mChainedTask.start();}}

Android 恢复出厂设置接口说明相关推荐

  1. android 恢复出厂设置 时间,Android 恢复出厂设置后,时间不能恢复替:2013年1月1日...

    Android 恢复出厂设置后,时间不能恢复为:2013年1月1日 前言         欢迎大家我分享和推荐好用的代码段~~声明         欢迎转载,但请保留文章原始出处: CSDN:http ...

  2. Android 恢复出厂设置(recovery)

    Android 恢复出厂设置基本流程 (1)遥控器/按键板后门键触发,或者应用里面从系统设置里面恢复出厂选项也可触发: // 后面以系统设置的应用触发为例 (2)选择恢复出厂设置之后,就会发送广播&q ...

  3. Android 恢复出厂设置(系统时间不修改)

    Android恢复出厂设置时,只会将/data和/cache分区进行清除,时间和其他分区不会清除, 时间由rtc硬件模块来进行维护的,时间更新后会将时间信息写入此硬件模块,在系统启动时,RTC硬件驱动 ...

  4. android 恢复出厂设置流程分析,基于Android系统快速恢复出厂设置方法实现.doc

    基于Android系统快速恢复出厂设置方法实现 基于Android系统快速恢复出厂设置方法实现 摘 要:针对使用Android系统的智能电视进行恢复出厂设置时重置速度慢的情况进行了研究和分析,从其重置 ...

  5. Android恢复出厂设置流程分析【Android源码解析十】

    最近看恢复出厂的一个问题,以前也查过这方面的流程,所以这里整理一些AP+framework层的流程: 在setting-->备份与重置--->恢复出厂设置--->重置手机---> ...

  6. android 恢复出厂设置代码流程(Good!)

    android的恢复出厂设置 文章问多一般都是从完整的recover mode讲起,恢复出厂设置只是 recovery mode下一个小部分. recovery mode流程分析的文章很多,比较完整的 ...

  7. android恢复出厂设置流程分析

    原文出自:http://blog.csdn.net/wdaming1986/article/details/11988531 最近看恢复出厂的一个问题,以前也查过这方面的流程,所以这里整理一些AP+f ...

  8. Android 恢复出厂设置上层流程

    最近看恢复出厂的一个问题,以前也查过这方面的流程,所以这里整理一些AP+framework层的流程: 在setting-->备份与重置--->恢复出厂设置--->重置手机---> ...

  9. Android:恢复出厂设置

    只有在开发Launcher和Setting一般才会用到恢复出厂设置,恢复出厂设置在应用层开发相对来说比较简单,就是发送广播. Android 9.0之前 Intent intent = new Int ...

最新文章

  1. 关于使用wcf架构分布式系统的一点想法
  2. carafe 上采样
  3. Visual Studio 中指定自定义生成事件
  4. SQLSERVER单表CRUD通用方法
  5. 本地目录+Eclipse+Webstorm当SVN配置库服务器更换-客户端设置方式
  6. 《x86汇编语言:从实模式到保护模式》视频来了
  7. 生态学研究方法(一)
  8. 查找表的原理与结构 什么是竞争与冒险现象?怎样判断?如何消除?
  9. unity 主线程调用_Kafka的Producer的调用序列图
  10. Tip: 强制 Outlook 用户使用缓存模式
  11. 剑指offer——面试题45:圆圈中最后剩下的数字(孩子们的游戏)
  12. 计算学生成绩 c语言,c语言项目实战2学生成绩的输入与计算.ppt
  13. Android访问WCF服务(上篇)-服务端开发
  14. 抢先下载:Windows XP SP3英文预览版
  15. cad2012打开后闪退_windows7打不开CAD2012出现闪退的处理方法
  16. php微信怎么关注公众号,微信如何关注公众号即自动注册登录?
  17. WebSocket多人聊天室
  18. 【BZOJ】2101: [Usaco2010 Dec]Treasure Chest 藏宝箱(dp)
  19. 机器人三星云顶之弈_机器码|云顶之弈10.16三星机器人加强介绍-云顶之弈10.16三星机器人加强了吗_234游戏网...
  20. 目前上海最便宜的企业宽带-199元的旺铺通B1套餐

热门文章

  1. 基于stm32F429的传感器实训
  2. Vagrant 入门指南
  3. 3月8号女神节送什么礼物好?女神节礼物分享
  4. 开源笔记系统leanote安装和部署完整教程
  5. 解决Winsock LSP导致无法上网的问题
  6. Java类加载过程简述
  7. Java 类的初始化顺序
  8. 维纳金dtc系统 v1.0 绿色
  9. python复制文本文件_Python如何复制文件中的内容
  10. Solidity合约中签名验证的一点实践