android 4 0以上無法收到開機廣播

2021-06-19 17:56:28 字數 925 閱讀 7808

前面的文章 android 開機廣播的使用 中已經提到android的開機啟動,但是在android 4.0 有時可以接收到開機啟動廣播,有時卻不可以。經過分析發現,如果應用程式安裝上始終沒有被開啟過,那麼在android啟動時,該應用無法接收到開機啟動廣播android.permission.receive_boot_completed。

原來在android 3.1的更新文件中已經做了說明。

下面是引自android官方api說明,位址 

原文如下

note that the system addsflag_exclude_stopped_packages

翻譯如下

從android 3.1開始,系統的軟體包管理器跟蹤處於停止狀態(stopped state)的應用程式,提供了一種控制其啟動後台程序和其他應用程式方式。

需要注意的是應用程式的停止狀態(stopped state)和activity的停止狀態是不一樣的。該系統可以分別管理這兩種停止狀態。

該平台定義了兩個新的intent的flag,讓傳送者指定的意圖是否應該被允許啟用停止的應用程式的元件。

當兩個flag都不設定或都設定的時候,預設操作是flag_include_stopped_packages。

請注意,系統向所有的intent的廣播新增了fl​​ag_exclude_stopped_packages標誌。它這樣做是為了防止廣播無意中的或不必要地開啟元件的stoppped應用程式的後台服務。後台服務或應用程式可以通過向廣播intent新增flag_include_stopped_packages標誌來喚醒處於停止狀態(stopped state)的應用程式。

應用程式處於停止狀態情況有兩種,一種是他們是第一次安裝,但尚未啟動,另一種是在管理應用程式中由使用者手動停止。

簡單的說,就是防止開機啟動惡意程式,優化啟動。經過驗證發現,系統級的應用程式是可以接收到開機啟動廣播的。

Android4 0以上版本新增APN

在android4.0以前,我們可以申請許可權然後再通過內容提供者進行對apn表進行修改。我們在去操作這個表的時候就會發現沒有write apns的許可權?那就去配置許可權唄!然而我們去新增許可權的時候系統提示只有系統級應用才能申請。那就把應用公升級成系統級的?神奇!機器是root過的,為什麼沒有許...

Android 4 0 事件系統

2013 01 31 15 13 295人閱讀收藏 舉報 事件系統簡介 1.android 事件系統,它解決的是如何將按鍵 滑鼠 觸屏訊息從收集到最終將之傳送到焦點視窗進行處理的問題 2.android 事件處理 流程分兩部分,一部分是從 framework 開始,如何 從底層讀取事件並分發 給ac...

android4 0上網設定

很多也問到為啥自己在家的pc機可以上網,而執行在pc機上面的android模擬器卻不能上網呢?是因為家裡的pc機的dns一般為 192.168.1.1,這個只是一般而言,不是絕對,這個得自己使用ipconfig all命令檢查下 而模擬器預設的dns為 10.0.2.3,那麼模擬器跟自己的pc就不在...