通過分析測試發現,若是應用程序安裝上始終沒有被打開過,那麼在Android啓動時,該應用沒法接收到開機啓動廣播android.permission.RECEIVE_BOOT_COMPLETED。html
Android 3.1的更新文檔中已經作了說明。android
下面是引自Android官方API說明,地址 http://developer.android.com/about/versions/android-3.1.html#launchcontrols測試
官方文檔的部分翻譯理解翻譯
啓動中止程序控制code
從Android 3.1開始,系統的軟件包管理器跟蹤處於中止狀態(stopped state)的應用程序,控制其啓動後臺進程和其餘應用程序提供了一種手段。htm
須要注意的是應用程序的中止狀態(stopped state)和Activity的中止狀態是不同的。該系統能夠分別管理這兩種中止狀態。進程
該平臺定義了兩個新的Intent的Flag,控制發送者指定的Intent是否應該被容許激活中止的應用程序的組件。文檔
FLAG_INCLUDE_STOPPED_PACKAGES
-包括在中止的應用程序列表中。 FLAG_EXCLUDE_STOPPED_PACKAGES
-排除在中止的應用程序列表中。當兩個Flag都不設置或都設置的時候,默認操做是FLAG_INCLUDE_STOPPED_PACKAGES。get
請注意,系統會將FLAG_EXCLUDE_STOPPED_PACKAGES
添加到全部的廣播Intent中去。它這樣作是爲了防止廣播無心中的或沒必要要地開展組件的stoppped應用程序的後臺服務。後臺服務或應用程序能夠經過向廣播Intent添加FLAG_INCLUDE_STOPPED_PACKAGES
標誌來喚醒處於中止狀態(stopped state)的應用程序。it
應用程序處於中止狀態狀況有兩種:一種是他們是第一次安裝,但還沒有啓動 ;另外一種是在管理應用程序中由用戶手動中止。