linux 关机并且发广播,一、通过发送系统广播让android关机、重启

要使机子关机或重启,归纳起来有如下三种方式:

一. 发送广播方式

二. Runtime调用Linux-shell

三. 通过init.rc启动系统服务来运行sh文件

本文先介绍第一种方式,使用发送广播的方式达到机子关机或重启的目的。

有以下几个注意点:

A.需要将应用提升至系统权限,应当配置manifest.xml文件,但是这样必须需要有对应的签名文件。

android:sharedUserId="android.uid.system"

B.需要添加关机权限

C.在Eclipse中,代码中的Intent.ACTION_REQUEST_SHUTDOWN 及 Intent.EXTRA_KEY_CONFIRM 在Eclipse IDE中报错,还是和前面说的一样,这两个属性不对上层开放,如果把项目放在源码中进行编译,是可以编译通过的。

D.由于需要在源码中编译项目,所以需要为项目编写mk文件,在项目根目录下添加Android.mk文件,内容如下所示:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := PowerActionDemo

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

操作部分:

public static final String ACTION_REBOOT =

"android.intent.action.REBOOT";

public static final String ACTION_REQUEST_SHUTDOWN = "android.intent.action.ACTION_REQUEST_SHUTDOWN";

//广播方式关机重启

case R.id.shutdown_btn1:

Log.v(TAG, "broadcast->shutdown");

Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);

intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);

//其中false换成true,会弹出是否关机的确认窗口

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

break;

case R.id.reboot_btn1:

Log.v(TAG, "broadcast->reboot");

Intent intent2 = new Intent(Intent.ACTION_REBOOT);

intent2.putExtra("nowait", 1);

intent2.putExtra("interval", 1);

intent2.putExtra("window", 0);

sendBroadcast(intent2);

break;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值