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的其他服务,还是建议在此处只设置个标志(比如创建一个临时文件),放到之后再处理 如何在代码中设置imageview的位置。 求安卓手机软件开发 TabHost的问题 如何判断虚拟键盘状态 关于android jni 调用已存在的SO appendPath 的用法 android webview能加载百度地图吗 No editor descriptor for id 安卓编译没有错,一调试就出现这个 什么情况?? android 如何去除长按HOME键呼出google search的功能 (小白求教)android 开发中对于几个文件的困扰 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的其他服务,还是建议在此处只设置个标志(比如创建一个临时文件),放到之后再处理