Android 关机实现

原创 2016年05月23日 13:40:24

本文的关机实现用两个种方法,一个是不需要安卓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-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过。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loongago/article/details/51481061

Android6.0 关机shutdown & 重启reboot流程分析

android中的重启或者关机操作有很多种情况,包括Power键长按关机/重启、恢复出厂设置重启、低电量关机等等,这些事件经过一系列的判断处理最终都会通过调用PowerManagerService.j...
  • Otaku_627
  • Otaku_627
  • 2016-12-27 21:57:17
  • 1838

Android系统关机或重启的几种实现方式

默认的SDK并没有提供应用开发者直接的Android系统关机或重启的API接口,一般来讲,实现Android系统的关机或重启,需要较高的权限(系统权限甚至Root权限)。所以,在一般的APP中,如果想...
  • fubrty
  • fubrty
  • 2016-11-18 18:45:42
  • 2957

Android7.0关机流程分析

在长按power键时系统会弹出对话框,让用户选择关机, 重启或者其他模式. 在本文中重点讲解系统关机流程. 让大家了解在系统关机过程都做了哪些事情,而导致关机慢又有那些主要的原因.在Android7....
  • fu_kevin0606
  • fu_kevin0606
  • 2017-01-17 19:36:23
  • 2694

Android实现关机和重启的几种方式

下面我们来探究Android如何实现关机,重启;在Android中这种操作往往需要管理员级别,或者root 实现的方式如下几种: 默认的SDK并没有提供应用开发者直接的Android系统关机或...
  • u010129985
  • u010129985
  • 2016-07-15 09:03:35
  • 2917

android 关机流程图

android  关机流程图   ShutdownThread.java文件 stop playing music,因为后面可能要playing shutdown music. 代码如下:     ...
  • MENGHUANBEIKE
  • MENGHUANBEIKE
  • 2017-04-11 14:00:44
  • 915

android下自动关机与重启

默认的SDK并没有提供应用开发者直接的Android系统关机或重启的API接口,一般来讲,实现Android系统的关机或重启,需要较高的权限(系统权限甚至Root权限)。所以,在一般的APP中,如果想...
  • u010823818
  • u010823818
  • 2016-08-09 09:15:59
  • 517

[Android5.1]关机工作流程

在《Android5.1开机画面显示工作流程分析》一文中,讲了Android系统开机动画的整个工作流程,这篇文章分析一下关机动画。 要实现关机动画,需要开发者修改bootanimation源码。 1 ...
  • u010753159
  • u010753159
  • 2016-05-10 20:38:21
  • 2696

Android关机流程解析

资料: https://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.html 在PowerManager...
  • airk000
  • airk000
  • 2013-06-27 14:54:31
  • 11370

在Android关机中插入脚本

一、Android开机运行脚本流程       在Android启动的过程中,在kernel/init/main.c中的start_kernel->rest_init->kernel_init->i...
  • u011630458
  • u011630458
  • 2014-03-27 11:09:59
  • 1156

Android关机和重启功能的实现

最近使用手机时候发现,手机的电源按键不灵敏了。因为主要作为测试机使用所以经常会为了,省电经常会用到关机或者重启。想着就自己写了一个简单的小程序。本以为很简单,结果发现网上的很多看不懂,要么就是给了几行...
  • qq_34471736
  • qq_34471736
  • 2016-10-12 17:25:53
  • 1683
收藏助手
不良信息举报
您举报文章:Android 关机实现
举报原因:
原因补充:

(最多只允许输入30个字)