`
carywei
  • 浏览: 191958 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

铺捉factoryreset的事件 ---转载

 
阅读更多

点击恢复出厂设置后,系统重启,再次进入系统后,一切数据都被清空,怎样可以得知之前到底是否恢复出厂设置了呢?怎样可以标记 恢复出厂设置事件 ?我希望在系统重启后,根据客户需求,判断出刚刚恢复过出厂设置,然后添加一些响应和处理,同时还要区别于正常开机或者重启,怎么做呢?

     最开始遇到这个问题,我束手无策,只是大致猜想应该是在Bootloarder中操作捕捉标记,应该很麻烦,所以发了个帖子询问。

     一个朋友提供了方案A:

     这个要修改bootable下的recovery.c文件,让他在擦除了usrdata分区之后,再cache分区中加一个标志文件。我的建议是恢复出厂 设置的时候会在cache分区的recovery下有log文件,你开机后可以立马去读这个文件,看做了什么,等Android 跑起来后会清空cache/recovery/log文件,所以要在适当的时候做处理。

     对于这种方法,理论上是正确的。我在真机上进行实验,开机后,必须以非常麻利的身手,快速的把cache/recovery/log拷贝出来,赶在Android 系 统跑起来之前,完成这一操作。但是并没有达到我想要的目的,原因是,为了满足客户的要求,提高启动速率,减少进入系统前格式化cache所耗费的时间,我 们的工程师对这里做了修改。限制了开机启动对cache的写入,即使是恢复出厂设置,也不会创建recovery目录,更不会有Log文件了。

     虽然这个方案落败了,但是幸运的是,又有个朋友提供了方案B:

     一般第一次开机或做factory reset后,肯定会报这个错误:

W/EntropyService( 761): unable to load initial entropy (first boot?)
W/EntropyService( 761): java.io.FileNotFoundException: /data/system/entropy.dat (No such file or directory)
W/EntropyService( 761): at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
W/EntropyService( 761): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
W/EntropyService( 761): at java.io.FileInputStream.<init>(FileInputStream.java:82)
W/EntropyService( 761): at java.io.FileInputStream.<init>(FileInputStream.java:134)
W/EntropyService( 761): at com.Android .server.RandomBlock.fromFile(RandomBlock.java:45)
W/EntropyService( 761): at com.Android .server.EntropyService.loadInitialEntropy(EntropyService.java:99)
W/EntropyService( 761): at com.Android .server.EntropyService.<init>(EntropyService.java:86)
W/EntropyService( 761): at com.Android .server.EntropyService.<init>(EntropyService.java:76)
W/EntropyService( 761): at com.Android .server.ServerThread.run(SystemServer.java:109)

具体到代码就是EntropyService中的:

private void loadInitialEntropy() {
       
try {
            RandomBlock.fromFile(entropyFile).toFile(randomDevice);
        }
catch (IOException e) {
            Slog.w(TAG,
" unable to load initial entropy (first boot?) " , e);
        }
    }

     在catch中添加想要做的处理就行了。需要特别注意的是:这是Android 起的第一个服务,如果做的处理比较复杂,要用到android的其他服务,还是建议在此处只设置个标志(比如创建一个临时文件),放到之后再处理。

  这个方法简单易操作,而且在系统正常开机或者正常重启时,EntropyService绝不会报错(W or E),真正达到了标记恢复出厂设置的目的。

分享到:
评论

相关推荐

    AXW-D800_FactoryReset

    标题“AXW-D800_FactoryReset”和描述“AXW D800 FactoryReset”都指向一个特定的操作,即AXW D800设备的出厂重置过程。这通常意味着用户或技术人员正在寻求恢复该设备到其初始状态,清除所有个人数据、设置和可能的...

    WIndow android adb platform-tools

    5. **恢复出厂设置**:`adb shell wipe data/factoryreset`(需谨慎使用,会清除所有用户数据)。 ### 实战应用 1. **远程调试**:结合无线连接功能,开发者可以在远离设备的电脑上进行远程调试。 2. **应用自动...

    FGT_VM64-v6-build0866-FORTINET.zip

    飞塔防火墙新版模拟器FGT_VM64v6.2.0 build0866 (GA) , 完美兼容VMware ...4.在命令行界面输入“execute factoryreset”恢复出厂设置,取消许可证无效提示。就可以登录web界面了。 此版本web首次登录需要重置密码。

    DDCCI COMMAND

    | 04 | AllReset | Yes | Yes | FactoryReset | | 05 | Brightness/ContrastReset| Yes | Yes | | | 10 | Brightness | Yes | Yes | Brightness | | 12 | Contrast | Yes | Yes | Contrast | | 14 | ...

    android adb

    - **恢复出厂设置**:`adb reboot recovery`进入恢复模式,然后执行`adb shell wipe data factoryreset`。 - **远程调试JavaScript**:配合Chrome浏览器的Remote Devices功能,实现Webview中的JavaScript调试。 ###...

    U8150刷机教程

    - `Wipedata/factoryreset`: 清除所有数据和缓存。 - `WipeDalvik-cache`: 清除缓存数据和ext分区内的数据。 - `WipeSD:extpartition`: 仅清除ext分区内数据。 - `Wipebatterystats`: 清除电池数据。 - `...

    tr-069-ClientTR069.tar.gz java实现源码

    Java 下 简单 实现 tr069 协议,包含了RPCMethod相关大部分协议,例如:GetRpcMethods、GetRpcMethodsResponse、AddObject.java、AddObjectResponse.java、DeleteObject.java、Download.java、FactoryReset.java、...

    Easycwmp_源码分析.pdf

    RPCMethods(CPE)部分详细解释了SetParameterValues、GetParameterValues、GetParameterNames、GetParameterAttributes、SetParameterAttributes、...Upload、Reboot、FactoryReset、ScheduleInform等方法的实现...

    安卓刷机教程.pdf

    - **Wipedata/factoryreset**:清除内存数据和缓存 - **WipeDalvik-cache**:清除缓存数据和eMMC分区数据 - **WipeSD:eMMCpartition**:只清除eMMC分区数据 - **Wipebatterytat**:清除电池数据 - **...

    刷机知识 常见指令

    - **5-1、Wipedata/factoryreset** —— 清除内存数据和缓存数据。 - 这个命令会清除所有应用数据和个人设置,但不会删除SD卡上的数据。 - **5-2、WipeDalvik-cache** —— 清除缓存数据 + ext分区内数据。 - ...

    OpenAcs脚本编写

    - **实例**:如果需要在特定时间触发Inform事件,可以调用`cpe.ScheduleInform()`。 15. **SetVouchers(可选)** - **描述**:此方法用于设置CPE使用的凭据选项。 - **实例**:对于需要认证的服务,可以通过`...

    defy刷机教程2.pdf

    - wipe(清除)操作:涉及到清除数据分区(wipedata/factoryreset)和缓存分区(wipecachepartition)。 请注意,刷机可能会使设备的保修失效,且在操作过程中存在一定的风险,包括设备变砖(即无法正常使用)、...

    870刷机教程

    - 依次执行“wipedata/factoryreset”、“wipecachepartition”以及“applyupdatefromexternal_storage”操作。 - 最后重启手机。 通过上述步骤,用户可以详细了解870刷机教程中的各个知识点,并按照指导顺利完成...

    LG_P990_P993_Root+Recovery+刷机(详细图文教程)

    - 执行双wipe操作:即选择“wipedata/factoryreset”和“wipecachepartition”两项。 - 从SD卡选择ROM文件并进行刷机操作。 - 刷机完成后,重启手机即可。 #### 四、注意事项 1. **刷机风险**:刷机操作可能会导致...

    安卓手机刷机步骤.pdf

    在这里,选择 wipe data/factoryreset 和 wipe cachepartition 并双双选择 YES 确认进行清除。 步骤 7-8:下载模式和刷机 在关机状态下,同时按住音量向下、中间实体 HOME 键和开机键,进入下载模式。然后,连接...

    U930 SD卡升级指导

    - `wipe date/factoryreset`:恢复出厂设置(用于丢失密码锁的情况)。 3. **升级完成**:升级完毕后手机将重新启动进入待机界面,此时升级操作完成。 #### 四、升级完成后备份还原和版本校验 1. **数据恢复**:...

    9128双清教程

    双清通常指的是清除数据分区(wipedata/factoryreset)和缓存分区(wipecache),这对于恢复出厂设置、解决系统故障等问题非常有效。 #### 二、准备工作 在开始之前,请确保设备电量充足,避免在操作过程中因电量不足...

Global site tag (gtag.js) - Google Analytics