Android 使用代码进入Recovery模式自动升级指定固件包

From: http://blog.csdn.net/zhoumushui/article/details/50766041

进入Recovery并自动升级指定路径下的升级包,OTA将固件包下载到指定路径/sdcard/update.zip,然后执行以下代码进入Recovery执行安装:

private static File RECOVERY_DIR = new File("/cache/recovery");
private static File COMMAND_FILE = new File(RECOVERY_DIR, "command");

private static void recoveryMode(Context context) throws IOException {
String arg = "--update_package=/sdcard/update.zip";
RECOVERY_DIR.mkdirs();

FileWriter command = new FileWriter(COMMAND_FILE);
try {
command.write(arg); // 往/cache/recovery/command中写入recoveryELF的执行参数。
command.write("\n");
} finally {
command.close();
}
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
pm.reboot("recovery"); // 调用PowerManager类中的reboot方法

throw new IOException("Reboot failed (no permissions?)");
}


需要声明REBOOT权限,需要是system uid才能调用该权限。

    <uses-permission android:name="android.permission.REBOOT" />


一般应用没有权限,可以在系统应用中开放对应接口,接收到指定广播后执行以上代码。

猜你喜欢

转载自sunj.iteye.com/blog/2406784
今日推荐