Android6.0以上实现断电关机
来源:互联网 发布:linux 删除文件夹命令 编辑:程序博客网 时间:2024/05/17 02:04
寻寻觅觅,终于让我找到了一种在安卓6.0以上可以用的关机方法,当然了,前提是手机必须root。因为我要实现的是断电关机,所以首先得检测电源事件。
一、监测电源事件:
1.创建Broad类
package com.slq.shutdownafterdisconnect;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.drm.DrmStore;/** * Created by 15265 on 2017/11/17. */public class Broad { private BatteryStateListener mBatteryStateListener; private Context mContext; private BroadCast receiver; public Broad(Context context) { mContext = context; receiver = new BroadCast(); } public void register(BatteryStateListener listener) { mBatteryStateListener = listener; if (receiver != null) { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LOW); filter.addAction(Intent.ACTION_BATTERY_OKAY); filter.addAction(Intent.ACTION_POWER_CONNECTED); filter.addAction(Intent.ACTION_POWER_DISCONNECTED); mContext.registerReceiver(receiver, filter); } } public void unregister() { if (receiver != null) { mContext.unregisterReceiver(receiver); } } private class BroadCast extends BroadcastReceiver { String action=null; @Override public void onReceive(Context context, Intent intent) { if (intent!=null) { action=intent.getAction(); switch (action) { //接通电源 case Intent.ACTION_POWER_CONNECTED: if (mBatteryStateListener!=null) { mBatteryStateListener.onStatePowerConnected(); } break; //拔出电源 case Intent.ACTION_POWER_DISCONNECTED: if (mBatteryStateListener!=null) { mBatteryStateListener.onStatePowerDisconnected(); } //MyShutDown(); break; //电量低 case Intent.ACTION_BATTERY_LOW: break; //电量发生变化 case Intent.ACTION_BATTERY_CHANGED: break; //电量充满 case Intent.ACTION_BATTERY_OKAY: break; } } } } //监听接口 public interface BatteryStateListener { public void onStatePowerConnected(); public void onStatePowerDisconnected(); }}
二、在MainActivity编写关机方法:
private void MyShutDown(){ try { Process process=Runtime.getRuntime().exec("reboot -p"); String data=null; BufferedReader errorLine=new BufferedReader(new InputStreamReader(process.getErrorStream())); BufferedReader inputLine=new BufferedReader(new InputStreamReader(process.getInputStream())); String error=null; while ((error=errorLine.readLine())!=null&&!error.equals("null")) { data+=error+"\n"; } String input=null; while((input= inputLine.readLine())!=null&&!input.equals("null")) { data+=input+"\n"; } } catch (Exception e) { }}
三、在onCreate中调用
Broad listener;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listener=new Broad(this); listener.register(new Broad.BatteryStateListener(){ @Override public void onStatePowerConnected() { Toast.makeText(MainActivity.this,"接通电源",Toast.LENGTH_LONG).show(); } @Override public void onStatePowerDisconnected() { Toast.makeText(MainActivity.this,"断开电源",Toast.LENGTH_LONG).show(); MyShutDown(); } }); }
四、在onDestroy中注销
@Overrideprotected void onDestroy() { if (listener!=null) { listener.unregister(); } super.onDestroy();}
阅读全文
0 0
- Android6.0以上实现断电关机
- 嵌入式Linux实现关机断电
- android6.0以上权限动态请求实现
- 探讨Android6.0及以上系统APP保活实现
- Android6.0以上权限检查
- Android6.0以上权限申请
- android6.0以上特殊权限
- Android6.0以上权限申请
- 展讯7731C_M Android6.0 充电指示灯实现(一)------关机充电实现
- android6.0以上版本动态获取权限
- android6.0以上动态申请权限问题。
- [Android开发] Android6.0以上权限总结
- android6.0以上权限申请工具类
- Android6.0以上,动态权限申请
- Android6.0以上悬浮窗崩掉的问题
- android6.0以及以上的权限处理
- Android6.0以上权限相关Util
- Android6.0以上版本打电话获取权限
- 针对JSON的一些初级理解
- 计蒜客 手机零件采购(简单背包)
- 补间动画代码实现
- 打印中文
- web项目的getContextPath()
- Android6.0以上实现断电关机
- 日语笔记001
- Java中this和super的用法总结
- HTML5基础知识3
- 数字视频接口
- 2017/11/17 LINUX学习笔记
- Linux下查看软件安装路径(whereis)
- C++关键字this
- Android Studio3.0升级gradle遇到的坑