APK中实现关机
16lz
2022-01-08
不像重启可以使用PowerManager.reboot(),Android 对于关机没有开放的API可以使用,因此只能使用源码中的方法,比如系统没电了总会关机吧
不过APK在eclipse中编译不了,解决方法有两种
代码位置:
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要关机了,而不是说实现关机。
更多相关文章
- android java 小型知识点
- 33、Android(安卓)中子fragment控制父对象改变布局
- android 6.0後讀取外部SD卡的路徑的方法
- Android(安卓)Activity生命周期
- arcgis for Android(安卓)100.2 加载shp
- TabWidget/TabHost的两种使用方法
- Android中menu详解
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用