在上一篇博客Android-sdcard广播的接收处理,中介绍了,如何订阅接收者,去接收系统发送的Sdcard状态改变广播,而这篇博客是订阅接收者,去接收开机/关机的广播
Android操作系统在开机的时候,系统会自动发出广播,Android操作系统在关机的时候,系统也会自动发出广播
在AndroidManifest.xml订阅接收者
<!-- 订阅(Xml形式订阅接收者) 订阅接收者:专门去接收Android系统开机/关机/发出的广播 --> <receiver android:name=".br.MyBootBroadcastReceiver"> <intent-filter> <!-- 开机完成✅ 启动完成✅ 开机是危险的行为,需要权限 --> <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- 关机 --> <action android:name="android.intent.action.ACTION_SHUTDOWN" /> </intent-filter> </receiver>
在AndroidManifest.xml加入关机接收权限
<!-- 接收开机广播的权限,开机是很危险的行为,所以需要此权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
被订阅的开关机接收者
package liudeli.croadcast1.br; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /** * 开关机接收者,可以接收两个广播 * 当Android操作系统开机/关机发生改变后,系统会自动的发出以下两种广播 * 1.开机广播 * 2.关机广播 */ public class MyBootBroadcastReceiver extends BroadcastReceiver { private final String TAG = MyBootBroadcastReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { Log.d(TAG, "Android操作系统开机了,运行中......."); } else if (Intent.ACTION_SHUTDOWN.equals(action)) { Log.d(TAG, "Android操作系统关机了......."); } } }
关机:
MyBootBroadcastReceiver: Android操作系统关机了.......
开机:
12-18 00:35:27.195 1834-1834/liudeli.croadcast1 D/MyBootBroadcastReceiver: Android操作系统开机了,运行中.......