我是在android源码里编译的package/apps/,因为需要调用的关机接口是不对上层开放的,在eclipse里面不能调用。

我主要是介绍调用android的关机功能,因为在调试过程中,关机的一些权限和其他条件是多于重启的,所以,如果能实现关机,那么重启也就没有问题了。

在AndroidManifest.xml中加入语句 android:sharedUserId= "android.uid.system" 与系统一样的uid,将apk提升为系统权限

该语句加在版本号后。

然后再写入一条系统权限<uses-permission android:name="android.permission.SHUTDOWN"/>

该权限只有系统级apk才能使用,所以eclipse也不能编译。

之后,在xml中写两个button,一个关机,一个重启,在此不介绍xml了。

实现重启,需要调用android.intent.action.REBOOT, 该接口对上层开放,可以直接调用:

  1. case R.id.reboot_btn:
  2. Intent intent=new Intent(Intent.ACTION_REBOOT);
  3. intent.putExtra("nowait", 1);
  4. intent.putExtra("interval", 1);
  5. intent.putExtra("window", 0);
  6. sendBroadcast(intent);
  7. break;

最后sendBroadcast也是系统级apk才可以发送。

实现关机,需要调用android.intent.action.ACTION_REQUEST_SHUTDOWN,此接口不对上层开放,在eclipse中是不能调用的,但是在源码中是有的,所以在源码中编译apk不会报错。

  1. public static final String ACTION_REQUEST_SHUTDOWN="android.intent.action.ACTION_REQUEST_SHUTDOWN"
  2.  
  3. public static final String EXTRA_KEY_CONFIRM="android.intent.extra.KEY_CONFIRM"
  4.  
  5. Intent i=new Intent(ACTION_REQUEST_SHUTDOWN);
  6. i.putExtra(EXTRA_KEY_CONFIRM, false);
  7. i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  8. startActivity(i);

我看了好多博客,都是写的 Intent i=new Intent( Intent. ACTION_REQUEST_SHUTDOWN);

我试过了,就算在linux里面编译也会报错,所以这里是需要自己定义一个常量的,然后直接使用这个常量,千万不要用Intent点出来。

EXTRA_KEY_CONFIRM这个也需要自己定义,也没对上层开放。

因为是在linux下编译,所以需要写个Android.mk文件,可以去复制其他apk的该文件,稍做修改

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3.  
  4. LOCAL_MODULE_TAGS := optional
  5.  
  6. # Only compile source java files in this apk.
  7. LOCAL_SRC_FILES := $(call all-java-files-under, src)
  8.  
  9. LOCAL_SDK_VERSION := current
  10.  
  11. LOCAL_PACKAGE_NAME := Reboot
  12.  
  13. LOCAL_CERTIFICATE := platform
  14.  
  15. LOCAL_DEX_PREOPT :=false
  16.  
  17. include $(BUILD_PACKAGE)
  18.  
  19. # Use the following include to make our test apk.
  20. include $(call all-makefiles-under,$(LOCAL_PATH))

我对mk文件不是很了解,说一下关键的地方:

LOCAL_PACKAGE_NAME:= 项目名

4.0以上编译apk需要加入 LOCAL_DEX_PREOPT := false 才能编译生成APK文件,默认true生成的不可独立安装运行

一定要加上该句 LOCAL_CERTIFICATE := platform  获取系统权限

我看到有人说要删掉bin目录,具体作用不清除,反正我删掉了

然后在android源码根目录 . build/envsetup.sh

再lunch 一个版本

进入项目有mk文件的目录 执行mm

编译出的apk路径在:out/target/product/anzhen4_mrd7/system/app/Reboot.apk

Android调用系统关机与重启功能的更多相关文章

  1. Android调用系统的发邮件功能

    package com.example.myapi.email; import java.util.ArrayList; import java.util.List; import android.c ...

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

    前阵子工作上遇到一些关于Android系统关机或重启的系统修改,于是,做了一些尝试,也搜集了一下资料,现在整理一下,做一些总结,方便学习或者日后工作的需要. 默认的SDK并没有提供应用开发者直接的An ...

  3. Android调用系统照相机

    ndroid调用系统相机实现拍照功能 在实现拍照的功能时遇到了很多问题,搜索了很多资料,尝试了很多办法,终于解决了,下面简要的描述下在开发过程中遇到的问题. 虽然之前看过android开发的书,但是没 ...

  4. C#实现控制Windows系统关机、重启和注销的方法:

    shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...

  5. Android调用系统相机、自己定义相机、处理大图片

    Android调用系统相机和自己定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,而且因为涉及到要把拍到的照片显示出来,该样例也会涉及到Android载入大图片时候的处 ...

  6. C#实现控制Windows系统关机、重启和注销的方法

    shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...

  7. Android调用系统相机、自定义相机、处理大图片

    Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...

  8. Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

    原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...

  9. Android调用系统相册和拍照的Demo

    最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题 ...

随机推荐

  1. php json_encode url链接出现双转义字符‘\\’和中文被编码的解决方法

    在PHP开发中 json_encode方法使用的频率还是蛮高的. 当数据中出现中文是,经过json_encode后,中文被编码了,不是显示的原中文字符. 可以通过urlencode编码后,在使用jso ...

  2. 一周学会Mootools 1.4中文教程:(7)汇总收尾

    转眼之间已经第七课了,这也将成为最后一课,如果这7课下来您感觉水平没有达到预想的水平,没关系您可以继续关注本站的博文,我会陆续发一些类似的文章帮您提升水平,另外我最近打算和群里的几个Mootools爱 ...

  3. PDO简介

    php链接数据库 半年后需要更换mysql为集群模式或者有钱了升级oracl数据库,这时的改动相当大,成本高.如果再之前使用PDO,之后再遇见这样的问题就很轻松. 开启PDO: 打开php.ini文件 ...

  4. Unity3D Android手机开发环境配置

    Unity3D Android手机开发环境配置 Date:2014-01-01 07:09 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/ ...

  5. .NET(C#):XmlReader和Whitespace以及MoveToContent和ReadToFollowing方法

    原文 http://www.cnblogs.com/mgen/archive/2012/04/26/2471403.html XmlReader默认是读取XML文件中的Whitespace和注释的. ...

  6. OpenCV初探

    一种基于OpenCV的PHP图像人脸识别技术 openCV是一个开源的用C/C++开发的计算机图形图像库,非常强大,研究资料很齐全.本文重点是介绍如何使用php来调用其中的局部的功能.人脸侦查技术只是 ...

  7. Azure SQL 数据库引入了新的服务级别

     新的级别将提升客户体验,并提供更多的业务连续性选项 为了更好地满足您在灵活性提升方面的需求,MicrosoftAzure SQL 数据库添加了新的服务级别(基础级和标准级),以与当前处于预览状态 ...

  8. HDU 1076 An Easy Task

    题解:枚举即可…… #include <cstdio> int main(){ int now,y,n,T,count; scanf("%d",&T); whi ...

  9. C++ Primer 学习笔记_88_用于大型程序的工具 --异常处理[续1]

    用于大型程序的工具 --异常处理[续1] 四.又一次抛出 有可能单个catch不能全然处理一个异常.在进行了一些校正行动之后,catch可能确定该异常必须由函数调用链中更上层的函数来处理,catch能 ...

  10. 某IT校招笔试

    前言 博主明天上午9点还有面试,今天突然看到某大牌IT公司笔试题目,必须做一下了 题目 1.假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数 A: h(K)=K/N; B: h(K) ...