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

一. 发送广播方式

二. 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 := PowerActionDemoLOCAL_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;





更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  3. 一款常用的 Squid 日志分析工具
  4. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  5. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  6. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  7. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  8. Android内存泄露自动检测神器LeakCanary
  9. Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)

随机推荐

  1. Android的raw下视频文件的读写-日记
  2. 关于安卓屏幕切换的过程
  3. Android获取外置sdcard路径
  4. win平台改代码到android 平台需要注意
  5. Android为什么会有65536的方法数量限制
  6. Android--面试题整理(五)
  7. 周末小结(五)
  8. Android的下载,编译, 运行
  9. Android中BroadcastReceiver广播使用及注
  10. (4.2.10.2)【android开源工具】Android Vol