java实现手机开关机_Android实现关机与重启的几种方式(推荐)

下面我们来探究Android如何实现关机,重启;在Android中这种操作往往需要管理员级别,或者root

Android实现的方式如下几种:

默认的SDK并没有提供应用开发者直接的Android系统关机或重启的API接口,一般来讲,实现Android系统的关机或重启,需要较高的权限(系统权限甚至Root权限)。所以,在一般的APP中,如果想要实现关机或重启功能,要么是在App中声明系统权限,要么是通过某种“间接”的方式,比如广播或反射,来间接实现系统关机或重启。再者,就是放在源码环境中进行编译,这样做有一个好处,就是可以直接调用Android中不公开的API,这是Eclipse+SDK没法达到的效果。下面是我自己尝试的几种方式:

一. 发送广播方式

Broadcast是Android的四大基本组件之一,也就是我们常说的广播。Android系统本身就包含了许多广播,时时刻刻在监听着系统中注册的每一个广播并随时准备响应操作。其中,就有关于关机或重启的广播:Intent.ACTION_REQUEST_SHUTDOWN和Intent.ACTION_REBOOT,通过发送这两个广播,Android就能自动接收广播,并响应关机或重启的操作。ACTION_REQUEST和ACTION_REBOOT是Intent.java是声明的两个字符串常量

public static final String ACTION_REBOOT =

"android.intent.action.REBOOT";

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

Intent.java位于源码/frameworks/base/core/java/android/content/Intent.java下面。具体实现方法如下

//广播方式关机重启

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);

inten

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值