2012年8月3日 星期五

讓Android在開機完成時自動啟動程式/服務


在我們所熟悉的Win XP/7 如果要在開機完成後自動執行程式,最簡單的方法就是將程式的圖示放置在"啟動"中,Android則沒有設計類似這樣的功能,如何可以可以在開機後自動執行程式或服務呢?
原理是這樣的;在Android開機完成後,系統會送出一個Broadcast資訊說"系統已經開機完成了" (android.intent.action.BOOT_COMPLETED),而且這個Action只會發送一次。
透過這樣的方式,寫出一個BroadcastReceiver來監聽這個資訊便可以達到自動啟動程式的目的了。



以下是執行程式碼:
MainActivity.java


MyIntentReceiver.java


AndroidManifest.xml

這邊要注意的地方是標示1的權限部分以及標示2的宣告部分。
其他部分則使用預設的程式碼,執行結果如下:

如果是在模擬器上執行的話,將程式關閉後可以使用下面的adb指令產生一個android.intent.action.BOOT_COMPLETED,這時候就會出現執行結果。
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

最後如果大家好奇的問,透過android.intent.action.BOOT_COMPLETED所帶出來的服務應該是不會有啥問題,但如果是Activity呢? 這部分我試了一下還蠻有趣的結果部分.....就留待給各位測試測試囉!!

參考:
1.Android Developers, Intent (ACTION_BOOT_COMPLETED)
http://developer.android.com/intl/zh-CN/reference/android/content/Intent.html#ACTION_BOOT_COMPLETED

沒有留言:

張貼留言