当前位置: 首页 > news >正文

[置顶] Android下实现自动关机的方法总结

最近在网上看了一些Android下实现自动关机的方法,有的不行,有的只适用一些机型,有的适用于大部分机型,笔者在此总结一下

 

法一:

Intent newIntent = new Intent(Intent.ACTION_SHUTDOWN);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(newIntent);

这种方法笔者试过,运行时出错

法二:

try {

            //获得ServiceManager类
            Class<?> ServiceManager = Class
               .forName("android.os.ServiceManager");

            //获得ServiceManager的getService方法
            Method getService = ServiceManager.getMethod("getService", java.lang.String.class);

            //调用getService获取RemoteService
            Object oRemoteService = getService.invoke(null,Context.POWER_SERVICE);

            //获得IPowerManager.Stub类
            Class<?> cStub = Class
               .forName("android.os.IPowerManager$Stub");
            //获得asInterface方法
            Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class);
            //调用asInterface方法获取IPowerManager对象
            Object oIPowerManager = asInterface.invoke(null, oRemoteService);
            //获得shutdown()方法
            Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class);
            //调用shutdown()方法
            shutdown.invoke(oIPowerManager,false,true);

   } catch (Exception e) {
       Log.e("shutdown", e.toString(), e);
   }

利用反射调用oIPowerManager方法,此种方法在有些机型上是可以的,但有些机型上在Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class);时会报出java.lang.NoSuchMethodException: shutdown [boolean, boolean]  错误,可能是这些机型不存在此方法

 

法三:

  Intent intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");

// 源码中"android.intent.action.ACTION_REQUEST_SHUTDOWN“ 就是 Intent.ACTION_REQUEST_SHUTDOWN方法
  intent.putExtra("android.intent.extra.KEY_CONFIRM", false);

// 源码中"android.intent.extra.KEY_CONFIRM"就是 Intent.EXTRA_KEY_CONFIRM方法
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  startActivity(intent);

这种方法笔者试过适用于大部分机型

 

相关文章:

  • 谷歌苹果已“技穷”?移动操作系统2013无创新
  • 7.[Think in Java笔记]操作符
  • Apache httpd 2.4.4 与老版本的差异
  • ScrollView 简单出错
  • 用户态到内核态切换之奥秘解析
  • Squid代理服务基础篇
  • with…do语句的用法
  • 揭秘:是网线影响你的散热
  • JJ Ying:越来越跨界的界面设计
  • Ubuntu将新增磁盘挂载到home下
  • 【Win7网络延迟问题多种解决方法】
  • 第二章 java语言基本语法————流程控制
  • RHEL 6.2 X64 kvm 为虚机添加console
  • C#判断操作系统是32位还是64位(超简单)
  • 作为程序猿,我们生活在一个幸福的时代
  • 2019年如何成为全栈工程师?
  • Angular 响应式表单 基础例子
  • CentOS 7 修改主机名
  • CSS实用技巧干货
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • isset在php5.6-和php7.0+的一些差异
  • js中forEach回调同异步问题
  • Lsb图片隐写
  • Nacos系列:Nacos的Java SDK使用
  • Nodejs和JavaWeb协助开发
  • rabbitmq延迟消息示例
  • 后端_MYSQL
  • 回顾2016
  • ------- 计算机网络基础
  • 批量截取pdf文件
  • 前端面试之CSS3新特性
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 推荐一个React的管理后台框架
  • 写代码的正确姿势
  • 新手搭建网站的主要流程
  • 用element的upload组件实现多图片上传和压缩
  • zabbix3.2监控linux磁盘IO
  • 阿里云ACE认证学习知识点梳理
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​ssh免密码登录设置及问题总结
  • ​VRRP 虚拟路由冗余协议(华为)
  • #QT(一种朴素的计算器实现方法)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (正则)提取页面里的img标签
  • (转)jdk与jre的区别
  • (转)Mysql的优化设置