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" />
一般应用没有权限,可以在系统应用中开放对应接口,接收到指定广播后执行以上代码。
进入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" />
一般应用没有权限,可以在系统应用中开放对应接口,接收到指定广播后执行以上代码。
相关文章推荐
- android studio快捷键
- Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单
- android 调用系统相册和系统拍照功能的Demo
- 以一个着色游戏展开讲解Android中区域图像填色的方法
- Android APK反编译就这么简单 详解(附图)
- Android studio下如何使用断点调试功能
- android动态换肤系列2——android.view.LayoutInflater.Factory的使用
- Android 广播机制 详解
- Android事件分发机制完全解析,带你从源码的角度彻底理解dispatchTouchEvent,onInterceptTouchEvent
- android 一键锁屏实现
- android Services
- android电池充电以及电量检测驱动分析
- Android控件— — —ImageView
- 隐藏android中EditText的下划线
- 详解Android中App的启动界面Splash的编写方法
- Android 使用百度鹰眼实现运动轨迹功能
- android camera2 API流程分析
- aFileChooser:兼容android2.1+的文件选择器
- Android基础核心总结之二-----Spinner、AutoCompleteTextView(自动完成控件)
- 自学android studio的一点小记录-----快捷键