Android如何監聽開機廣播和關機廣播
阿新 • • 發佈:2019-02-08
專案背景:在錄影過程中,遇到關機事件,想要監聽關機操作,從而停止錄影,退出程式。
一、監聽開機廣播
Android系統啟動完成後會發出啟動完成廣播(android.intent.action.BOOT_COMPLETED),所有註冊了接收啟動完成廣播的接收器(BroadcastReceiver)都會收到此廣播。
1、在AndroidManifest.xml檔案裡新增授予應用程式訪問系統開機事件的許可權
- <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
2、編寫系統發出的開機啟動完成廣播的接收器。自定類繼承BroadcastReceiver類,程式碼如下:
- publicclass BootBroadcastReceiver extends BroadcastReceiver {
- privatestaticfinal String TAG = "BootBroadcastReceiver";
- privatestaticfinal String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
- @Override
- publicvoid onReceive(Context context, Intent intent) {
-
if
- Log.i(TAG, "BootBroadcastReceiver onReceive(), Do thing!");
- }
- }
- }
- <receiverandroid:name="com.android.test.BootBroadcastReceiver">
- <intent-filter>
-
<
- <categoryandroid:name="android.intent.category.HOME"/>
- </intent-filter>
- </receiver>
二、監聽關機廣播
Android系統提供了與開機廣播對應的關機廣播,在系統即將關閉時發出此廣播。
1、編寫在系統即將關閉時發出的廣播的接收器。自定類繼承BroadcastReceiver類,程式碼如下:
- publicclass ShutdownBroadcastReceiver extends BroadcastReceiver {
- privatestaticfinal String TAG = "ShutdownBroadcastReceiver";
- privatestaticfinal String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
- @Override
- publicvoid onReceive(Context context, Intent intent) { //即將關機時,要做的事情
- if (intent.getAction().equals(ACTION_SHUTDOWN)) {
- Log.i(TAG, "ShutdownBroadcastReceiver onReceive(), Do thing!");
- }
- }
- }
- <receiverandroid:name="com.android.test.ShutdownBroadcastReceiver">
- <intent-filter>
- <actionandroid:name="android.intent.action.ACTION_SHUTDOWN"/>
- <categoryandroid:name="android.intent.category.HOME"/>
- </intent-filter>
- </receiver>
1、重新啟動,關閉後立刻又開機。
開機啟動完成和即將關機時發出的廣播,都可以接收到。
2、單純關機操作
即將關機時發出的廣播接收不到。
3、單純開機操作
開機啟動完成發出的廣播時可以接收到的。