Android编程实现系统重启与关机的方法

2019-12-10 19:00:31王冬梅

注意:

Intent.ACTION_REQUEST_SHUTDOWN
Intent.EXTRA_KEY_CONFIRM

会报错,这是因为该属性是  {@hide} 的。
不要担心放到系统编译就可以了,注意下面的步骤即可。

5. 将整个工程放到 android 源码里面编译

a. 手动复制 reboot 到 src/packages/app 下面

b. mm -j4 开始编译(可以参考 《Android入门之源码开发基础教程》)

如果编译成功,在 /out/target/product/generic/system/app 目录下面,会多一个 reboot.apk 文件。

6. 安装 apk

该 apk 必须放到 system/app 下面,即 adb push reboot.apk /system/app

思考:

关机或者重启,一个是发送广播,一个是启动 Activity。
通过查找相应的 action 或者 string 资源(如关机关键字)就可以找到对应的类。
我们知道,framwork 的 mk 文件、资源文件等都在:
/frameworks/base/core/res、frameworks/base/core/res/res
比如关机的那个 Activity 就是 ShutDownActiviy,其又调用 ShutdownThread.shutdown。
重启的相关的类在 WatchDog.java(定义了相关的量), 其内部类 RebootRequestReceiver 是主要代码。
继续追踪你就会了解整个流程了。



注:相关教程知识阅读请移步到Android开发频道。