在上一篇博客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操作系統開機了,運行中.......
