android 4.0及以上如果想接受系統廣播至少要先執行程式一次。(其實android 3.1就開始了,這麼說是為了針對我們開發最多android 4.0);這樣是是為了防止開機啟動惡意程式,優化啟動。(防止病毒等開機啟動程式危害系統,所以andoird4.0不允許沒有被使用者手動啟動過的程式進行開機啟動);android 4.0 無法接收開機廣播的問題本身是因為,如果應用程式安裝上始終沒有被開啟過,那麼在android啟動時,該應用無法接收到開機時的系統廣播android.permission.receive_boot_completed。經過驗證發現,系統級的應用程式是可以接收到開機啟動廣播的。
該平台定義了兩個新的intent的flag,控制傳送者指定的intent是否應該被允許啟用停止的應用程式的元件。
?flag_include_stopped_packages -包括在停止的應用程式列表中。
?flag_exclude_stopped_packages -排除在停止的應用程式列表中。
當兩個flag都不設定或都設定的時候,預設操作是flag_include_stopped_packages。請注意,系統會將flag_exclude_stopped_packages新增到所有的廣播intent中去。它這樣做是為了防止廣播無意中的或不必要地開展元件的stoppped應用程式的後台服務。後台服務或應用程式可以通過向廣播intent新增flag_include_stopped_packages標誌來喚醒處於停止狀態(stopped state)的應用程式。
開機自啟動很簡單。不過首先需要明確一點:沒有activity的android程式,是啟動不了滴,不過,你可以指定乙個activity,或者,指定乙個桌面掛件呀,就是widgets,知道吧?
那麼,我們就有兩種方法來實現你的功能:
第一,寫乙個很簡單的程式,就乙個activity,指此activity標題欄去掉,背景全透明,然後在此activity的oncreate將自己finish()掉,什麼都不用幹,只要在manifest.xml中申明開機服務就ok,然後在程式內部響應此開機服務。
第二,不要activity了,直接將程式寫成乙個widgets……
開機廣播和關機廣播
1 public class bootcompletedreceiver extends broadcastreceiver 2 9 然後在androidmanifest.xml檔案中進行註冊 receiver android name bootcompletedreceiver intent fi...
Android開機廣播和關機廣播
有些時候我們需要我們的程式在系統開機後能自動執行,這個時候我們可以使用android中的廣播機制,編寫乙個繼承broadcastreceiver的類,接受系統啟動關閉廣播。如下 author coolszy date 2011 6 14 blog public class bootcompleted...
Android開機廣播和關機廣播
有些時候我們需要我們的程式在系統開機後能自動執行,這個時候我們可以使用android中的廣播機制,編寫乙個繼承broadcastreceiver的類,接受系統啟動關閉廣播。如下 view plain authorcoolszy date2011 6 14 blog public class boot...