android11代码关机

之前有些版本可以使用如下方式从代码里面调用关机:

Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", false); //是否需要确认
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

最近搞android11的项目此方法已经不能使用,
于是就使用如下反射的方式了:

        //关机
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
Class clazz = pm.getClass();
try{
     Method shutdown = clazz.getMethod("shutdown",boolean.class,String.class,boolean.class);
     shutdown.invoke(pm,false,"shutdown",false);
}catch (Exception ex){
     ex.printStackTrace();
}

另外还有一种方式是使用命令 reboot -p ,个人不建议大家使用。

不管上面哪一个都是需要在AndroidManifest.xml里面添加 :android:sharedUserId=“android.uid.system”

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐