一、相关权限
应用设置成系统权限方式 在AndroidMenifest.xml中添加如下代码
android:sharedUserId="android.uid.system"
添加关机权限
<uses-permission android:name="android.permission.SHUTDOWN" />
二、发送系统广播
Intent.ACTION_REQUEST_SHUTDOWN关机广
Intent.ACTION_REBOOT重启广播
广播方式关机重启
case R.id.shutdown_btn1:
Log.v(TAG, "broadcast->shutdown");
Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
//其中false换成true,会弹出是否关机的确认窗口
startActivity(intent);
break;
case R.id.reboot_btn1:
Log.v(TAG, "broadcast->reboot");
Intent intent2 = new Intent(Intent.ACTION_REBOOT);
intent2.putExtra("nowait", 1);
intent2.putExtra("interval", 1);
intent2.putExtra("window", 0);
sendBroadcast(intent2);
break;
该方法需要添加关机权限
系统权限
android:sharedUserId=“android.uid.system”
代码中的Intent.ACTION_REQUEST_SHUTDOWN 及 Intent.EXTRA_KEY_CONFIRM 在Eclipse IDE中报错,这两个属性不对上层开放,如果把项目放在源码中进行编译,是可以编译通过的。
三、通过init.rc启动系统服务来运行sh文件
Android启动文件系统后调用的会调用第一个应用程序是/init,此文件一个很重要的内容就是解析了init.rc和init.xxx.rc,然后 执行解析出来的任务。而init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。利用这一点,可以编写简单的关机或重启的sh脚本文件,通过 系统init解析,执行相应的关机或重启操作。
1.首先,编写关机和重启的sh脚本。比如,新建
重启脚本 system_reboot.sh,内容如下:
#!/system/bin/sh
reboot