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

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

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

该语句加在版本号后。

然后再写入一条系统权限

该权限只有系统级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)


我试过了,就算在linux里面编译也会报错,所以这里是需要自己定义一个常量的,然后直接使用这个常量,千万不要用Intent点出来。我看了好多博客,都是写的 Intent i=new Intent(Intent.ACTION_REQUEST_SHUTDOWN);

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

更多相关文章

  1. 基于android的NFS根文件系统的制作
  2. Linux/Android——输入子系统input_event传递 (二)
  3. 通过Android Studio查看SDK源码
  4. Android之Rxjava2.X 10————Rxjava源码阅读2
  5. Android系统学习总结1--init和Zygote
  6. android 如何调用系统拨打电话的功能
  7. frameworks中增加自定义服务使其也成为系统服务
  8. Android root权限获取原理详解
  9. Android系统开发01—Android基本组件

随机推荐

  1. 2011.06.20——— android listview的拖
  2. android 开发中常用颜色,以及一些颜色的代
  3. android 取消标题,程序意外停止
  4. Android电池信息(Battery information)
  5. android adb 启动各种应用
  6. anr日志
  7. android 一直在最前面的浮动窗口效果
  8. Android的ListView,数据更新后自动scroll
  9. android视频不播放的问题
  10. android中判断网络和WIFI是否连接