关闭

Android 关机实现

标签: androidAndroid关机shutdown安卓
3958人阅读 评论(0) 收藏 举报
分类:

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

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

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

android中定时-开“关机”的实现

关于android自动关机,网上有很多应用程序和例子。 相对于自动开机来说,自动关机可以在应用层通过设置alarm来实现。而自动开机,它需要底层rtc时钟的支持。我自己也没做过这个,不过在网上查到一个...
  • sdvch
  • sdvch
  • 2015-03-26 23:50
  • 1349

android中定时-开“关机”的实现

关于android自动关机,网上有很多应用程序和例子。 相对于自动开机来说,自动关机可以在应用层通过设置alarm来实现。而自动开机,它需要底层rtc时钟的支持。我自己也没做过这个,不过在网上查到一个...
  • sdvch
  • sdvch
  • 2015-03-26 23:50
  • 1349

Android系统关机充电动画实现

\mediatek\platform\mt6572\lk\mt_logo.c /********** show_animationm_ver: charging animation version...
  • Mr_kings
  • Mr_kings
  • 2016-07-01 11:13
  • 1472

Android TV开发--实现延时关机功能(一)功能描述

Tv上延时关机功能介绍(图解)  1.设置延时关机入口: 此处为长按Power键呼出菜单。 2.延时时间选择入口 左右键选择时间,蓝色背景不动,时间项左右平移。...
  • adayabetter
  • adayabetter
  • 2016-04-17 16:47
  • 1121

android中定时开关机的实现

关于android自动关机,网上有很多应用程序和例子。 相对于自动开机来说,自动关机可以在应用层通过设置alarm来实现。而自动开机,它需要底层rtc时钟的支持。我自己也没做过这个,不过在网上查到一个...
  • qq_29586601
  • qq_29586601
  • 2016-07-21 15:32
  • 178

android 系统重启与关机:java 代码实现

在应用层如何通过代码实现 android 系统的重启,分享给大家。 这篇博客是在 android 系统开发的基础之上进行实践的,所以如果你是纯粹的 app 开发,可能要让你失望了。 该代码...
  • l0605020112
  • l0605020112
  • 2014-08-21 14:48
  • 709

Android 系统重启与关机:Java 代码实现(3)

在应用层如何通过代码实现 Android 系统的重启,分享给大家。 这篇博客是在 android 系统开发的基础之上进行实践的,所以如果你是纯粹的 app 开发,可能要让你失望了。 该代码...
  • bsmmaoshenbo
  • bsmmaoshenbo
  • 2014-12-12 13:50
  • 486

让Android程序获得系统的权限,实现关机重启,静默安装等功能

原文出自:http://www.cnblogs.com/welenwho/archive/2012/05/10/2494984.html        android想要获得系统权限有几种途...
  • jancyliu
  • jancyliu
  • 2013-06-28 13:47
  • 1553

使用广播实现的Android关机及重启

步骤一:编写Java代码 java部分代码:                            ...
  • lideguo1979
  • lideguo1979
  • 2012-09-12 16:15
  • 1585
    个人资料
    • 访问:36889次
    • 积分:683
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    最新评论