博客导航
本文的关机实现用两个种方法,一个是不需要安卓root过,但是需要目标系统的系统签名;另外一个是需要系统root过。
#一、利用系统签名来获取权限关机
关机代码如下:
private void shutDown(){
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);
startActivity(intent);
}
- 源码中"android.intent.extra.KEY_CONFIRM"是 Intent.EXTRA_KEY_CONFIRM 方法。
- 源码中"android.intent.action.ACTION_REQUEST_SHUTDOWN“ 是 Intent.ACTION_REQUEST_SHUTDOWN 方法
需要在AndroidManifest.xml里添加
android:sharedUserId="android.uid.system"
和<uses-permission android:name="android.permission.SHUTDOWN/>"
权限。android:sharedUserId="android.uid.system"
是将自己的程序加入到了系统的进程中,同时也将获得系统的权限。需要添加系统签名。
下面是范例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:sharedUserId="android.uid.system"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.SHUTDOWN"/>
**当然,这些代码在eclipse里会报错(我当时用的是eclipse),把这些错误报告删掉,强行编译就可以了。**具体做法是把problems里的把与它相关的错误报告删除掉。Windows-show view-