android-----关机命令

天天见闻 天天见闻 2022-03-15 科技 阅读: 1123
摘要: 找到系统怎么处理关机的,然后我们把那段代码拿出来就行了。一行命令实现Android自动关机off了,而且是瞬间关机,于是我又想起linux下的sleep命令可以让Terminal等待指定时间,哈哈,那么定时关机就可以构造为这样的语句:这句话的意思是,先获得超级用户权限(需要系统被root),等待10秒后执行关机指令。

pad中自带有重启命令(reboot),本以为也应该有关机命令啊,可是找来找去也没有诸如shutdown、poweroff等命令。

然后想到busybox中有一个poweroff命令,故又去编译了一个busybox推进去,执行了busybox poweroff之后看了下返回码

是0(即echo $?),然后,然后什么也没发生……

网上流行的方法是在Java端发送要求关机的Intent,如下:

[java] view plaincopy

Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);

intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

mContext.startActivity(intent);

需要加上相关的权限:android:sharedUserId="android.uid.system"

但要从apk中实现关机的话,那还不如手动关呢,所以自己动手了,写个诸如shutdown的小命令,实现也很简单,

找到系统怎么处理关机的,然后我们把那段代码拿出来就行了。

系统中处理关机部分的代码路径:frameworks/base/core/jni/android_os_Power.cpp,里面有个

android_os_Power_shutdown方法,具体如下:

[cpp] view plaincopy

static void android_os_Power_shutdown(JNIEnv *env, jobject clazz)

{

sync();

#ifdef HAVE_ANDROID_OS

reboot(RB_POWER_OFF);

#endif

}

看到有个reboot函数,然后再追踪这个reboot(RB_POWER_OFF)函数,看到其最终会调用__reboot这个函数

(汇编实现的)关机命令,我们只要给它传递“合适”的参数就行了。

代码实现:

1、在Android源码目录中的packages/apps/下创建一个目录,例如:Hello。

2、编写Android.mk文件:LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= shutdown.c

LOCAL_MODULE:= shutdown

LOCAL_PRELINK_MODULE:= false

LOCAL_SHARED_LIBRARIES:= libutils

include $(BUILD_EXECUTABLE)

3、编写shutdown.c源文件,如下:

[cpp] view plaincopy

#include

#include

#include

#include

#ifndef LOG_TAG

#define LOG_TAG "dxyh"

#endif

int main(int argc, char **argv)

{

int retval;

if ((retval = __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,

RB_POWER_OFF, NULL)) < 0) {

LOGE("Try to shutdown the machine failed!");

exit(EXIT_FAILURE);

}

return 0;

}

4、mm

5、将生成的shutdown可执行程序推入到pad中的/system/bin下即可。

6、然后就可以和其他命令一样运行了,例如adb shell shutdown。

另一篇:

一行命令实现Android自动关机

前几天晚上失眠,实在睡不着觉,于是想用Nexus7听一听小野丽莎的歌,在安静祥和之中睡去(怎么感觉有点。。。)但是不能让平板总是这么循环播放吧(屋里吐槽Google Play Music),所以在平板上打开Terminal,进行了一系列尝试,结果宣告不存在shutdown命令,reboot命令的help中也只提供了少得可怜的参数,于是我就上百度Google一下搜狗,翻阅了好多资料,发现了一个reboot的用法,奇怪关机命令,reboot --help的时候怎么没见过这个p参数呢?以下是p参数的使用方法:

reboot命令的p参数

这个在我的Nexus7中测试可用,真的是power off了,而且是瞬间关机,于是我又想起linux下的sleep命令可以让Terminal等待指定时间,哈哈,那么定时关机就可以构造为这样的语句:

$ su

# sleep 10 && reboot -p

测试成功!这句话的意思是,先获得超级用户权限(需要系统被root),等待10秒后执行关机指令。

reboot的p参数,没有找到官方的说明Terminal中的帮助说明也对这个p参数只字未提,那么想到reboot和halt的近亲关系,我们来看一下helt的参数说明吧:

halt命令的参数说明

看到最后一个p参数了吗?帮助说明中说的是:power down the system (if possible, otherwise halt).

翻译过来就是:如果可以关闭系统就关闭系统,不可以关闭系统的话就终止这条命令的执行。

由于是秒关,暂时不知道对系统有何影响,在此抛砖引玉。

其他相关

win10自动关机命令,win10自动关机设置在哪

作者: 天天见闻 时间:2022-03-16 阅读: 654
内容导航:一、win10中设置的自动关机为什么不起作用1.window10自带程序关机使用命令实现关机输入以下命令就可以实现关机了win10自动关机命令win8、win10可以用"win+R"快捷键调出。常见的有windows的自动关机,还有嵌入式系统手机系统的自动关机。-s"倒计时电脑自动关机命令:"shutdown.四、如何设置win10自动关机命令...

电脑自动关机命令取消(解除电脑自动关机设置步骤)

作者: 天天见闻 时间:2022-03-16 阅读: 272
-c命令取消重启。-c命令取消重启。hutdown命令安全地将系统关机。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备。而在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭。process取消目前正在执行的关机程序。没有调用shutdown而强制关机或重启。...
Linux 关机命令详解

Linux 关机命令详解

作者: 天天见闻 时间:2022-03-16 阅读: 363
“参数”常用的有“-h”和“-r”,“-h”对应关机操作,“-r”对应系统重启(使用“-r”参数时,其功能与Linux系统中的另一个命令“reboot”功能类似)。“延迟时间”是指从发出命令到真正执行关机或重启操作的延迟时间。halt”命令,将直接关机。终极关机命令0”命令也可以实现关机功能。...
Linux shutdown命令:关机和重启

Linux shutdown命令:关机和重启

作者: 天天见闻 时间:2022-03-16 阅读: 420
命令来进行关机和重启。才是最安全的关机与重启命令。命令来进行关机和重启。命令的基本信息如下。命令名称:shutdown。所在路径:/sbin/shutdown。执行权限:超级用户。功能描述:关机和重启命令格式选项:命令;-h:关机;-r:重启;1】重启与定时重启。命令进行重启:2】关机和定时关机。...

centos关机与重启命令详解

作者: 天天见闻 时间:2022-03-16 阅读: 290
centos关机与重启命令详解与实战centos重启命令:-c命令取消重启centos关机命令:-c命令取消重启因为linux与windows不同,其后台运行着许多进程,所以强制关机可能在重启计算器〔reboot〕时强迫fsck。halt—-最简单的关机命令没有调用shutdown而强制关机或重启。关机〔或重启〕前﹐关掉所有的网络接口。linux如何修改root管理员密码...

WinXP使用关机命令shutdown的方法

作者: 天天见闻 时间:2022-03-16 阅读: 247
所以的设置一下定时关机,那WinXP电脑自动关机有什么方法呢?3、通过帮助信息,我们可以学习到有关shutdown的使用命令的解释及方法。放弃系统关机远程计算机关机/重启动/放弃强制运行的应用程序关闭而没有警告会出现关机倒计时界面开始-运行-启动中,电脑就会在每天23:30自动关机了。关于WinXP使用关机命令shutdown的方法就介绍到这里了,是不是很简单啊!...
我来说两句

年度爆文