博客导航
本文的关机实现用两个种方法,一个是不需要安卓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"权限。android:sharedUserId="android.uid.system"是将自己的程序加入到了系统的进程中,同时也将获得系统的权限。需要添加系统签名。
下面是范例:

<?xml version="1.0" encoding="utf-8"?>    

**当然,这些代码在eclipse里会报错(我当时用的是eclipse),把这些错误报告删掉,强行编译就可以了。**具体做法是把problems里的把与它相关的错误报告删除掉。Windows-show view-other-搜索problems可以找到错误报告。上机用时需要添加系统签名,不然安装不上。

  • 签名用目标系统的platform密钥来重新给apk文件签名。在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"signapk
    platform.x509.pem platform.pk8 input.apk
    output.apk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。

#二、系统root过,利用系统管理员root身份来行使关机命令

try {    createSuProcess("reboot -p").waitFor(); //关机命令    //createSuProcess("reboot").waitFor(); //这个部分代码是用来重启的} catch (Exception e) {            e.printStackTrace();        }        static Process createSuProcess() throws IOException  {File rootUser = new File("/system/xbin/ru");if(rootUser.exists()) {return Runtime.getRuntime().exec(rootUser.getAbsolutePath());} else {return Runtime.getRuntime().exec("su");}}static Process createSuProcess(String cmd) throws IOException {DataOutputStream os = null;Process process = createSuProcess();try {os = new DataOutputStream(process.getOutputStream());os.writeBytes(cmd + "\n");os.writeBytes("exit $?\n");} finally {if(os != null) {try {os.close();} catch (IOException e) {}}}return process;}

这个就不多解释了,用系统组里root身份来行使系统权限关机。安卓系统需要root过。

更多相关文章

  1. android 通过platform.pk8,platform.x509.pem生成jks签名文件
  2. Android(安卓)APK 签名
  3. Android之apk文件签名——keytool 和 jarsigner
  4. Android(安卓)NDK之 ----- Java 方法映射到C中的签名
  5. android:persistent="true"相关--保证不被系统kill掉
  6. Delphi XE5 android 图解为Android应用制作签名
  7. ubuntu12.04 android studio 安装(装完后再重启系统挂了,请勿参考
  8. 当 Activity 以全屏模式运行时,如何允许 Android(安卓)系统状态栏
  9. 关于 android 远程控制(pc 控制手机)

随机推荐

  1. Android的intent之间复杂参数的传递
  2. Android(安卓)View原理浅析——View的工
  3. 就等android了
  4. Android深入浅出之Audio(1,2,3)
  5. Android(安卓)开发环境搭建
  6. ANDROID导入文件后的本地无法编译生成R.j
  7. Android事件分发机制完全解析
  8. Android中ListView 控件与 Adapter 适配
  9. Android 横竖屏操作
  10. Android(安卓)适配toolbar后windowSoftIn