|
目录
一、监听开机广播
二、监听关机广播
三、测试结论
一、监听开机广播
Android系统启动完成后会发出启动完成广播,所有注册了接收启动完成广播的接收器都会收到此广播。
1.自定义开机广播类
/**
* Desc: 开机广播
* Created by Jack on 2020/6/6 17:20
**/
public class BootBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "BootBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.v(TAG, "action=" + action);
if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
Log.d(TAG, "ACTION_BOOT_COMPLETED");
}
}
}
2.在AndroidManifest.xml文件里注册开机广播接收器
<receiver android:name=".base.receiver.BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
3.在AndroidManifest.xml文件里添加授予应用程序访问系统开机事件的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
*注意:Android 4.0后需要添加权限才能接收开机广播
二、监听关机广播
Android系统提供了关机广播,在系统即将关闭时发出此广播。
1.自定义关机广播类
/**
* Desc: 关机广播
* Created by Jack on 2020/6/6 17:20
**/
public class ShutdownBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "ShutdownBroadcast";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.v(TAG, "action=" + action);
if (Intent.ACTION_SHUTDOWN.equals(action)) {
Log.d(TAG, "ACTION_SHUTDOWN");
}
}
}
2.在AndroidManifest.xml文件里注册关机广播接收器
<receiver android:name=".base.receiver.ShutdownBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
*注意:只要断电关机时才能接收到关机广播,用adb reboot的方式重启时不能接收到关机广播
三、测试结论
下面的表格数据是在不同测试case下通过输出的log整理出来的数据,从表格数据也可以总结出以一下要注意的两点:
1)*注意:Android 4.0后需要添加权限才能接收开机广播
2)*注意:只要断电关机时才能接收到关机广播,用adb reboot的方式重启时不能接收到关机广播
| | 接收开启广播 | 接收关机广播 | | adbreboot_重启_无权限 | 无 | 无 | | 断电关机_开机_无权限 | 无 | 有 | | adbreboot_重启_有权限 | 有 | 无 | | 断电关机_开机_有权限 | 有 | 有 |
|