1. 纯应用层实现关机,不在framework层修改。
2. 开发板验证没有问题,API17的,不知道安全性较高的API是否可行。
3. 开发板是没有ROOT的,即system等系统文件夹只读不可写。
4. 网络上目前的三种方式,在不修改framework、不重新编译的情况下全部失败(报权限错误,尝试了很多方式)。
实现思路:短暂提升应用程序的级别,发送shell关机指令。
代码如下:
Process su; su = Runtime.getRuntime().exec("/system/xbin/su"); String cmd = "reboot -p" + "\n" + "exit\n"; su.getOutputStream().write(cmd.getBytes());
相当于命令行su权限后reboot -p,只是封装了供用户使用,用户不会去reboot的。
注:1. 仔细看清个别主板可能存在大小写的问题,可以手动找到su文件。
2. 需要reboot权限。