不像重启可以使用PowerManager.reboot(),Android 对于关机没有开放的API可以使用,因此只能使用源码中的方法,比如系统没电了总会关机吧

代码位置:

BatteryService.java (amdroid_march\android\frameworks\base\services\java\com\android\server)

private final void shutdownIfNoPower() {        // shut down gracefully if our battery is critically low and we are not powered.        // wait until the system has booted before attempting to display the shutdown dialog.        if (mBatteryLevel == 0 && !isPowered() && ActivityManagerNative.isSystemReady()) {            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);        }    }

不过APK在eclipse中编译不了,解决方法有两种

一种方法是放到自己的源码中编译

一种方法是eclipse加载frameworks的classes.jar,方法就不说了

加载.jar后,APK就可以使用诸多Android没有开放的内容了,比如{@hide}的Intent.ACTION等。

而且需要特别注意在加载classes.jar时,顺序一定要放在Android.jar之前,eclipse中Order and Export中调整。否则,仍会有些ACTION找不到。

APK需要添加属性:

android:sharedUserId="android.uid.system"

需要platform签名。


另外,网上有人问通过Intent.ACTION_SHUTDOWN实现关机不成功,原因我认为是这样的:

Intent.ACTION_SHUTDOWN是个广播ACTION,系统关机时会广播这个信息,通知receiver要关机了,而不是说实现关机。

更多相关文章

  1. android java 小型知识点
  2. 33、Android(安卓)中子fragment控制父对象改变布局
  3. android 6.0後讀取外部SD卡的路徑的方法
  4. Android(安卓)Activity生命周期
  5. arcgis for Android(安卓)100.2 加载shp
  6. TabWidget/TabHost的两种使用方法
  7. Android中menu详解
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. 面对成百上千台服务器产生的日志,试试这款
  2. 还在百度Linux命令?推荐一套我用起来特顺
  3. 被我用烂的DEBUG调试技巧,专治各种搜索不
  4. SharePoint 排错: SharePoint Online Ass
  5. 还在手动部署SpringBoot应用?试试这个自动
  6. 微服务应用性能如何?APM监控工具来告诉你!
  7. Mall 电商实战项目发布重大更新,全面支持S
  8. 不要再重复造轮子了,这款开源工具类库贼好
  9. Could not initialize derby.jdbc.Autolo
  10. Docker服务开放了这个端口,服务器分分钟变