点击恢复出厂设置后,系统重启,再次进入系统后,一切数据都被清空,怎样可以得知之前到底是否恢复出厂设置了呢?怎样可以标记 恢复出厂设置事件 ?我希望在系统重启后,根据客户需求,判断出刚刚恢复过出厂设置,然后添加一些响应和处理,同时还要区别于正常开机或者重启,怎么做呢?
最开始遇到这个问题,我束手无策,只是大致猜想应该是在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),真正达到了标记恢复出厂设置的目的。
我问问题的帖子在:http://topic.csdn.net/u/20110427/14/4df32953-fec5-44c0-8847-375b5a44bee8.html
欢迎交流~
分享到:
相关推荐
5. **系统设置重置**:调用`Settings.System.resetToDefaults()`重置系统设置到默认值。 6. **重启设备**:最后,使用`reboot()`函数重启设备,以完成恢复出厂设置的过程。 在整个过程中,还需要注意错误处理和...
这类工具通常包含一组引导加载程序,能够帮助用户执行如清除缓存分区、恢复出厂设置或者安装新的系统映像等操作。SuperBoot可能通过快速启动模式(如恢复模式或下载模式)来访问和执行这些功能,对不熟悉Android系统...
尝试升级到最新稳定版系统,或者恢复出厂设置(注意备份数据)来排查问题。 7. **权限问题**:某些应用可能请求了不应有的权限,或者在权限管理上存在问题,导致系统异常。检查应用权限设置,确保它们遵循Android的...
至于`recovery`文件,它是Android系统的一个特殊模式,通常用于系统更新、恢复出厂设置或执行诊断测试。在压力测试中,`recovery`模式可以帮助验证设备在极端条件下的稳定性,例如连续执行恢复出厂设置操作。 综上...
2. **Activity作为Launcher**:主要的Activity需要设置为`<category android:name="android.intent.category.LAUNCHER" />`,这样它才能显示在应用抽屉中。 3. **Intent过滤器**:理解并使用Intent过滤器是关键,...
5. **恢复模式和Fastboot**:adb还支持进入设备的恢复模式和Fastboot模式,这对于刷机、解锁Bootloader或者恢复出厂设置等操作十分必要。 在"adb Android SDK Platform-Tools 23.zip"压缩包中,除了adb.exe之外,...
6. **恢复模式**: 在设备遇到问题时,ADB可以帮助进入恢复模式,执行刷机、恢复出厂设置等操作。 ### 使用ADB的基本步骤 1. 安装Android SDK,确保包含了ADB组件。 2. 连接设备到电脑,开启USB调试模式(在设备的...
- **系统恢复与刷机:** adb还常用于恢复出厂设置、安装自定义ROM,以及执行各种系统级别的操作,如安装系统更新、提取系统文件等。 3. **adb命令详解:** - `adb devices`:列出所有已连接的设备和它们的状态。 ...
3. **恢复出厂设置**:在设备无法正常启动时,Fastboot模式下的擦除操作可以清除数据并恢复出厂状态。 4. **硬件检测**:Fastboot命令可用于检查和测试设备的硬件组件,如电池状态、内存等。 **使用方法** 1. **...
11. **BRICK**:这是一个非常危险的权限,拥有该权限的应用可以完全禁用设备,因此仅在极少数情况下(如恢复出厂设置的系统应用)才会使用。 12. **BROADCAST_PACKAGE_REMOVED**:此权限允许应用程序广播一个通知,...
6. **恢复与刷机**:在更高级的使用场景中,adb可以用于执行恢复模式下的操作,如安装更新、清除数据或恢复出厂设置。 7. **无线调试**:通过`adb tcpip`命令,开发者可以启用设备的无线调试,无需物理连接,提高了...
通过`adb shell`命令,你可以进入设备的shell环境,执行各种系统命令,如查看文件系统、修改系统设置、启动或停止服务等。这对于系统级的调试和测试极其有用。 在某些特定场景下,如设备无响应或需要执行自动化测试...
4. **恢复与刷机**:当设备遇到问题时,ADB可以用于恢复出厂设置(`adb reboot recovery`)或刷入新的系统映像。这对于开发者测试不同版本的系统或修复故障非常有用。 5. **远程调试**:对于运行在网络上的Android...
1. 系统优化:在测试前对设备进行恢复出厂设置,关闭不必要的系统服务和后台应用,确保测试环境纯净。 2. 硬件准备:确保设备电量充足,使用稳定的网络连接,并在测试环境中禁用可能干扰的硬件功能。 3. 应用隔离:...
8. 重启设备或恢复出厂设置:`adb reboot`可以重启设备,而`adb reboot recovery`则会进入恢复模式。`adb erase`命令可以清除设备数据。 9. 无线连接:除了USB连接,adb还支持Wi-Fi连接,只需一次设置,就能在无线...
在日常开发工作中,adb和fastboot的配合使用可以帮助开发者进行各种任务,例如远程调试应用程序、捕获系统日志、恢复设备至出厂设置,甚至在没有官方支持的情况下为设备安装第三方ROM。然而,由于这些工具涉及到设备...
- 系统修改:对于高级用户,ADB还可以用于修改系统文件,刷入自定义固件或者恢复出厂设置。 8. **无线ADB连接**:除了通过USB连接,ADB还支持无线连接,只需在设备和计算机上配置相同的网络环境,并使用特定的命令...
- **设备控制**:可以模拟用户输入,执行设备重启、恢复出厂设置等操作。 - **调试Web服务**:配合其他工具如`tcpdump`,可以对网络请求进行抓包分析。 3. **adb网络功能**: - **无线adb**:通过开启adb over ...