恢复出厂设置核心代码:sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));

即发送一个广播,需要在AndroidManifest.xml配置

android:permission="android.permission.MASTER_CLEAR"

android:priority="100" >

并加入权限

基本上以上就可以实现恢复出厂设置的。系统的设置功能就是这样完成恢复出厂设置的,但是这个过程中有很多问题,主要是因为权限造成的。

最明显的问题是,添加android.permission.MASTER_CLEAR权限时会报错。Permission is only granted to system apps

这里就说明了我们自己实现恢复出厂设置和系统设置恢复出厂的区别

这个错误很好解决,只需要 project\clean 一下就去掉错误了

但是运行程序时,当然不会恢复出厂啦,提示是权限不足,E/AndroidRuntime(2562): java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MASTER_CLEAR_NOTIFICATION from pid=2562, uid=10027

根据提示可以看出是广播的权限,但是我们已经声明了权限android:permission="android.permission.MASTER_CLEAR"

在android/platform/frameworks/base/core/res/AndroidManifest.xml文件中,可以看到

当然还有很多类似的

也就是说我们不能使用这个广播,但是没有其他办法的情况下只能铲除这块石头

直接把这条注释掉,然后重新编译系统,烧录,然后就能够前进一步

继续运行会发现新的错误E/MasterClear(1060): Can't perform master clear/factory reset

E/MasterClear(1060): java.io.FileNotFoundException: /cache/recovery/command: open failed: EACCES (Permission denied)

依然是权限问题,即没有/cache/recovery/文件夹的操作权限

网上有好几种解决办法,我只说我最终解决问题的办法(1)AndroidManifest.xml添加android:sharedUserId="android.uid.system"

(2)Android.mk添加LOCAL_CERTIFICATE := platform

此时,程序是不能安装的,提示错误:

Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

大概意思就是要给apk添加系统权限

我用系统自带

在platform/build/target/product/security/中找到platform.pk8 platform.x509.pem等签名文件

signapk.jar:由/platform/build/tools/signapk/编译产出,可以在/out/host/linux-x86/framework/中找到

把这几个文件与apk放到同一目录下,命令行执行

java -jar signapk.jar platform.x509.pem platform.pk8 FactoryTest.apk FactoryTest_signed.apk

把MyFactoryTest_signed.apk安装后,发现任然不能安装,错误

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]

采用另一种方法,用

mm命令

在Android源码环境下编译得到apk将eclipse中的项目MyFactoryTest整个拷贝到android/platform/packages/apps/目录下

在android源码根目录下执行:source build/envsetup.sh

到刚才的项目目录下(cd android/platform/packages/apps/MyFactoryTest)执行:mm

安装android/platform/out/target/product/mt8658sdk/system/app/MyFactoryTest1.2.apk

出现错误Failure [INSTALL_FAILED_DEXOPT]

这是因为在system\app下面的apk是经过优化的,而dex文件不会打包到apk中,dex文件会被优化后,生成odex文件。

下面就是程序经编译之后,在workspace/out/target/product/generic/system/app/下生成的.odex和.apk两个文件Install: out/target/product/generic/system/app/xxx.odex

Install: out/target/product/generic/system/app/xxx.apk

这样安装apk时,就会缺少dex文件,导致报错[INSTALL_FAILED_DEXOPT]。

找到未优化过的apk,即在out/target/product/generic/obj/APPS/下找到对应的APP:package.apk.unaligned

当然可以重命名一下package.apk.unaligned ————>FactoryTest.apk

安装后完成

android 恢复出厂 自动恢复文件夹,Android恢复出厂设置相关推荐

  1. android import找不到文件夹,android 音乐播放器找不到源文件

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.example.frame.a123; import android.app.Service; import android.co ...

  2. android剪切文件怎么恢复吗,【剪切的文件如何恢复】被剪切或删除的文件夹怎么恢复...

    随着电子设备的发展,大家的各种工作越来越依赖于这些电子设备,比如电脑.手机等等.在这些设备中,大家经常需要对文件进行各种操作,其中包括有复制.粘贴.剪切等等,而在这些操作过程中,大家有可能会遇到文件丢 ...

  3. Android中项目中各个文件夹的含义和用途详解

    1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片. ...

  4. android raw文件作用,Android 中raw和assets文件夹的区别

    Android 中raw和assets文件夹的区别 发布时间:2020-09-25 08:40:41 来源:脚本之家 阅读:103 作者:lqh Android 中raw和assets文件夹的区别 以 ...

  5. 恢复exchange2003的公共文件夹

    恢复exchange2003的公共文件夹 步骤 1:下载 PFDAVAdmin 工具 a.  建议从 Microsoft 网站下载 PFDAVAdmin 工具.(百度一搜就出来啦!) b.  将该工具 ...

  6. android 7 创建文件夹,Android 在 res/layout 文件夹 下创建一个 子文件夹实例

    Android 资源文件夹 Layout 文件夹 Layout 文件是存放Android的布局文件的资源文件夹,但是如果你想要在里面创建子文件夹,你会发现xml文件报错. 如何在Layout文件夹下方 ...

  7. Android APT不能自动生成文件

    Android APT不能自动生成文件 序 添加依赖 Annotation为Java library Module,很简单 还有一个Android library Module 命名为apt-lib ...

  8. android 根目录uri,如何在根目录下创建一个文件夹Android

    我需要在根目录下创建CAT_IMG文件夹,并在列表视图中检索它.但CAT_IMG文件夹不在根目录中创建.我在清单文件中添加了权限.请帮我在根目录下创建一个文件夹.如何在根目录下创建一个文件夹Andro ...

  9. 不小心删除文件夹怎么恢复,怎么恢复误删文件?

    不小心删除文件夹怎么恢复?居家办公作息不稳定,导致我最近上班的时候总是犯错,比如保存或者查看某些本周要用的文件时,一个不留神就将其删除了.这些文件数据都是经过一定时间的整理才做出来的,重新做的话很浪费 ...

  10. 如何恢复计算机隐藏的文件夹,电脑文件夹删除了怎么恢复 电脑隐藏的文件夹怎么找到...

    我们在使用电脑的时候难免会有误操作的时候,比如我们想清丽电脑中的垃圾文件,不小心将一个重要的文件一起删除了,这时候我们只能想办法恢复吧!可是怎么恢复呢?其实很简单,下面小编为大家带来文件夹误删除的详细 ...

最新文章

  1. l-logger命令基本介绍
  2. web.xml 常用标签配置(转)
  3. 计算机视觉 | 计算机界国际学术会议和期刊目录
  4. spring mvc工作原理及组件说明
  5. ACL 2019 开源论文 | 使用跨领域语言建模的跨领域命名实体识别
  6. 「权威发布」2019年电赛最全各类题目细节问题解答汇总
  7. HTML网页结构化框架、meta标签和语义化标签
  8. 使用print时出错 SyntaxError: Missing parentheses in call to ‘print‘ Did you mean print(““)
  9. Oracle 中LONG RAW BLOB CLOB类型介绍
  10. 完全卸载docker 有效
  11. 债券价格和到期收益率的关系_债券价格、到期收益率与票面利率之间的关系是什么?...
  12. Node.js 从零开发web server博客项目--项目初始化
  13. Linux-1:微星主板+双系统安装Ubuntu18.04.5
  14. c语言实用计算器项目,C语言实现简单计算器小项目
  15. PDFgetXPDFgetN 软件分享
  16. Linux如何杀掉僵尸进程
  17. python雪人_在Python乌龟画中通过箭头键使雪人移动
  18. 实现人脸识别性别之路---星型赋值法
  19. 网络安全课程day1
  20. 亲密数对(3~3000)

热门文章

  1. linux block framework(1) - 块设备概念
  2. 华为电脑Linux怎么恢复出厂设置,华为MateBook笔记本怎么恢复出厂设置还原系统?详细教程...
  3. 2024杭州电子科技大学计算机考研信息汇总
  4. 我的世界服务器在线奖励指令,手把手教你用计分板制作在线奖励系统
  5. 这款首月流水8亿的二次元手游,技术难度很高
  6. 微软也玩百度竞价推广
  7. 基于SVM实现人脸识别
  8. 2016最新iOS开发者证书申请及安装教程
  9. 宝宝专业智力测试软件,1岁宝宝的智力测试
  10. AUTOCAD学习笔记8:单相桥式整流滤波稳压电路的绘制