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

来源:互联网 发布:擎洲广达软件价格 编辑:程序博客网 时间:2024/05/21 10:53

2-29,4年才有一次的日子,小李子终于抱走了Oscar小金人。

进入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" />

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


0 0