Android调用系统关机与重启功能
我是在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, 该接口对上层开放,可以直接调用:
- case R.id.reboot_btn:
- Intent intent=new Intent(Intent.ACTION_REBOOT);
- intent.putExtra("nowait", 1);
- intent.putExtra("interval", 1);
- intent.putExtra("window", 0);
- sendBroadcast(intent);
- break;
最后sendBroadcast也是系统级apk才可以发送。
实现关机,需要调用android.intent.action.ACTION_REQUEST_SHUTDOWN,此接口不对上层开放,在eclipse中是不能调用的,但是在源码中是有的,所以在源码中编译apk不会报错。
- public static final String ACTION_REQUEST_SHUTDOWN="android.intent.action.ACTION_REQUEST_SHUTDOWN"
- public static final String EXTRA_KEY_CONFIRM="android.intent.extra.KEY_CONFIRM"
- Intent i=new Intent(ACTION_REQUEST_SHUTDOWN);
- i.putExtra(EXTRA_KEY_CONFIRM, false);
- i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(i);
我看了好多博客,都是写的 Intent i=new Intent( Intent. ACTION_REQUEST_SHUTDOWN);
我试过了,就算在linux里面编译也会报错,所以这里是需要自己定义一个常量的,然后直接使用这个常量,千万不要用Intent点出来。
EXTRA_KEY_CONFIRM这个也需要自己定义,也没对上层开放。
因为是在linux下编译,所以需要写个Android.mk文件,可以去复制其他apk的该文件,稍做修改
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- # Only compile source java files in this apk.
- LOCAL_SRC_FILES := $(call all-java-files-under, src)
- LOCAL_SDK_VERSION := current
- LOCAL_PACKAGE_NAME := Reboot
- LOCAL_CERTIFICATE := platform
- LOCAL_DEX_PREOPT :=false
- include $(BUILD_PACKAGE)
- # Use the following include to make our test apk.
- 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调用系统关机与重启功能的更多相关文章
- Android调用系统的发邮件功能
package com.example.myapi.email; import java.util.ArrayList; import java.util.List; import android.c ...
- Android系统关机或重启的几种实现方式
前阵子工作上遇到一些关于Android系统关机或重启的系统修改,于是,做了一些尝试,也搜集了一下资料,现在整理一下,做一些总结,方便学习或者日后工作的需要. 默认的SDK并没有提供应用开发者直接的An ...
- Android调用系统照相机
ndroid调用系统相机实现拍照功能 在实现拍照的功能时遇到了很多问题,搜索了很多资料,尝试了很多办法,终于解决了,下面简要的描述下在开发过程中遇到的问题. 虽然之前看过android开发的书,但是没 ...
- C#实现控制Windows系统关机、重启和注销的方法:
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- Android调用系统相机、自己定义相机、处理大图片
Android调用系统相机和自己定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,而且因为涉及到要把拍到的照片显示出来,该样例也会涉及到Android载入大图片时候的处 ...
- C#实现控制Windows系统关机、重启和注销的方法
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...
- Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博
原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...
- Android调用系统相册和拍照的Demo
最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题 ...
随机推荐
- php json_encode url链接出现双转义字符‘\\’和中文被编码的解决方法
在PHP开发中 json_encode方法使用的频率还是蛮高的. 当数据中出现中文是,经过json_encode后,中文被编码了,不是显示的原中文字符. 可以通过urlencode编码后,在使用jso ...
- 一周学会Mootools 1.4中文教程:(7)汇总收尾
转眼之间已经第七课了,这也将成为最后一课,如果这7课下来您感觉水平没有达到预想的水平,没关系您可以继续关注本站的博文,我会陆续发一些类似的文章帮您提升水平,另外我最近打算和群里的几个Mootools爱 ...
- PDO简介
php链接数据库 半年后需要更换mysql为集群模式或者有钱了升级oracl数据库,这时的改动相当大,成本高.如果再之前使用PDO,之后再遇见这样的问题就很轻松. 开启PDO: 打开php.ini文件 ...
- Unity3D Android手机开发环境配置
Unity3D Android手机开发环境配置 Date:2014-01-01 07:09 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/ ...
- .NET(C#):XmlReader和Whitespace以及MoveToContent和ReadToFollowing方法
原文 http://www.cnblogs.com/mgen/archive/2012/04/26/2471403.html XmlReader默认是读取XML文件中的Whitespace和注释的. ...
- OpenCV初探
一种基于OpenCV的PHP图像人脸识别技术 openCV是一个开源的用C/C++开发的计算机图形图像库,非常强大,研究资料很齐全.本文重点是介绍如何使用php来调用其中的局部的功能.人脸侦查技术只是 ...
- Azure SQL 数据库引入了新的服务级别
新的级别将提升客户体验,并提供更多的业务连续性选项 为了更好地满足您在灵活性提升方面的需求,MicrosoftAzure SQL 数据库添加了新的服务级别(基础级和标准级),以与当前处于预览状态 ...
- HDU 1076 An Easy Task
题解:枚举即可…… #include <cstdio> int main(){ int now,y,n,T,count; scanf("%d",&T); whi ...
- C++ Primer 学习笔记_88_用于大型程序的工具 --异常处理[续1]
用于大型程序的工具 --异常处理[续1] 四.又一次抛出 有可能单个catch不能全然处理一个异常.在进行了一些校正行动之后,catch可能确定该异常必须由函数调用链中更上层的函数来处理,catch能 ...
- 某IT校招笔试
前言 博主明天上午9点还有面试,今天突然看到某大牌IT公司笔试题目,必须做一下了 题目 1.假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数 A: h(K)=K/N; B: h(K) ...