您的位置:首页 > 移动开发 > Android开发

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

2016-02-29 15:55 501 查看
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" />

一般应用没有权限,可以在系统应用中开放对应接口,接收到指定广播后执行以上代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: