我是在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调用系统关机与重启功能的更多相关文章

  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. Hadoop插件安装

    1.首先下载Hadoop对应版本的插件,以Hadoop 1.0版本对应的插件Hadoop-eclipse-plugin1.0.3.jar为例 2.将下载的插件放置到Ecplise安装目录的plugin ...

  2. Intellij idea workflow 工作流插件安装

    idea提供支持的工作插件名字叫actiBPM,可以在idea中在线安装,但往往会连接不成功安装失败,所以这里提供了硬盘安装的方式: 首先是要去官网下载actiBPM插件,下载地址: http://p ...

  3. php功能---删除空目录

    header('content-type:text/html;charset:utf-8'); function display($dir){ //判断是否是一个目录 if(!is_dir($dir) ...

  4. python 利用位移法将ip转为number以及将number转为ip

    简介: 使用位移法将ip转为number型以及将number型转为ip,使用语言为python2.7 #!/usr/bin/env python # coding:utf-8 def ip2num(i ...

  5. No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s)

    In Build Settings are: Architectures: Starndard (armv7, armv7s) Base SDK: Latest iOS (iOS 6.0) Build ...

  6. dataguard dubugs

    alter database open read only;alter database open read only*ERROR at line 1:ORA-10456: cannot open s ...

  7. 关于js封装框架类库之事件模块

    在触发DOM上的某个事件时,会产生一个事件对象event.这个对象中包含着所有与事件有关的信息.包括导致事件的元素,事件的类型以及其他与特定事件相关的信息. 例如: 鼠标操作点击事件时,事件对象中会获 ...

  8. 汉字转拼音的vc++程序源代码

    #include "StdAfx.h" #include "MyChiToLetter.h" // Download by http://www.codefan ...

  9. XML方式实现Spring声明式事务管理

    1.首先编写一个实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() ...

  10. c++ primer plus 习题答案(4)

    p333.3 #include<iostream> #include<cstdlib> #include<cstring> #include<string&g ...