1、关机
方法一:关机属于系统级操作,所以需要获得系统级的权限。
android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.SHUTDOWN/>
注意:一般的app开发是做不了系统级的应用,这里的方法是使用了系统签名来获得权限的(公司产品是基于原生Android定制的系统,所以我有对应的签名文件)
相关代码:
Intent intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
方法二、以管理员身份运行命令
Runtime.getRuntime().exec(new String[]{"su","-c","reboot -p"});
或者
Runtime.getRuntime().exec(new String[]{"su","-c","shutdown"})
2、重启
方法1、关机属于系统级操作,所以需要获得系统级的权限。
android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.REBOOT"
相关代码:
PowerManager pm = (PowerManager) this.context.getSystemService(Context.POWER_SERVICE);
pm.reboot("");
同理,也需要系统签名来获得权限。
方法2、以管理员身份运行命令
Runtime.getRuntime().exec("su -c reboot");