Android factory data reset 恢复出厂设置,系统重启,再次进入系统后,我怎样可以得知之前到底是否恢复出厂设置了呢?怎样可以标记 恢复出厂设置 事件 ,我希望在系统重启后,根据客户需求,添加一些响应,怎么做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首次起机, EntropyService应该会挂掉,你看看能否得到EntropyService来判断可以不 谢谢你,但是我怎么利用它呢?loadInitialEntropy(); addDeviceSpecificEntropy(); writeEntropy(); scheduleEntropyWriter(); 这个要修改bootable下的recovery.c文件,让他在擦除了usrdata分区之后,再cache分区中加一个标志文件。我的建议是恢复出厂设置的时候会在cache分区的recovery下有log文件,你开机后可以立马去读这个文件,看做了什么,等android跑起来后cache分区会被清空,所以要在适当的时候做处理。 哦,android界面跑起来后会删除cache/recovery/log文件,不是清空cache分区。 我对上层不是很精通哈,不过我看系统里有很多现成的例子,比如你插着USB线开机,最后UI界面会说USB线连接了。同样的这个log文件在恢复出厂设置的时候是有的,等java层起来后就没了,你可以在最下面的某一个守护进程起来的时候检测这个log文件,然后上报给java层。比如可以用现成的Vold守护进程。 vold(sendMsg)-->MountService(sendBroadCast)-->你的UI监听程序 插USB线开机启动,在UI界面显示通知这个我可以做到,但是log里我并没有发现有关恢复出厂设置的信息 是/cache/recovery/log里,不是logcat …… 我分得清/cache/recovery/log 和 logcat 都说了是进入系统界面之前了 由于某种原因,项目中修改为即使恢复出厂设置,也不会创建/cache/recovery目录,为了提供清cache的速率。 所以这种方法在我们这个项目中不可行。 必须从正常重启和恢复出厂设置的差异来入手,/cache 不能利用了 如果你是在源码上开发, 这个应该蛮简单的。 一般第一次开机或做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)I/sysproc ( 761): System server: entering thread pool.也就是在这个函数中: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的其他服务,还是建议在此处只设置个标志(比如创建一个临时文件),放到之后再处理 请教一个关于android ui的样式 Android蓝牙通讯模块源码(Android蓝牙开发浅析 续) 用手机来编程,可以实现吗? layout_gravity也garvity的区别 android 布局疑问 如何把Mp3文件包在自己的APK中,让APK在安装的过程中把Mp3文件装载入系统里 请教个关于ContentProvider的问题,谢谢! android背景图片的处理 安全锁定文件 android app 怎么唤醒淘宝app 并且打开优惠券的页面 android bitmap内存溢出的问题!!!急急急!!! 关于手机软件开发
谢谢你,但是我怎么利用它呢?
loadInitialEntropy();
addDeviceSpecificEntropy();
writeEntropy();
scheduleEntropyWriter();
插USB线开机启动,在UI界面显示通知这个我可以做到,但是log里我并没有发现有关恢复出厂设置的信息
我分得清/cache/recovery/log 和 logcat
都说了是进入系统界面之前了
必须从正常重启和恢复出厂设置的差异来入手,/cache 不能利用了
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)
I/sysproc ( 761): System server: entering thread pool.也就是在这个函数中:
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的其他服务,还是建议在此处只设置个标志(比如创建一个临时文件),放到之后再处理