Android應用如何開機自啓動、自啓動失敗原因

本文轉自:http://www.trinea.cn/android/android-boot_completed-not-work/

本文主要介紹Android應用如何開機自啓動、自啓動失敗的原因、adb命令發送BOOT_COMPLETED
問題:應用程序是否可以在安裝後自啓動,沒有ui的純service應用如何啓動?答案馬上揭曉^_*
1、Android應用如何開機自啓動
(1)、在AndroidManifest.xml中註冊

注意不僅要添加android.intent.action.BOOT_COMPLETED對應的action,還需要添加對應的uses-permission

 

(2)、Receiver接收廣播進行處理

 

2、自啓動失敗的原因
接收不到BOOT_COMPLETED廣播可能的原因
(1)、BOOT_COMPLETED對應的action和uses-permission沒有一起添加
(2)、應用安裝到了sd卡內,安裝在sd卡內的應用是收不到BOOT_COMPLETED廣播的
(3)、系統開啓了Fast Boot模式,這種模式下系統啓動並不會發送BOOT_COMPLETED廣播
(4)、應用程序安裝後重來沒有啓動過,這種情況下應用程序接收不到任何廣播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
Android3.1之後,系統爲了加強了安全性控制,應用程序安裝後或是(設置)應用管理中被強制關閉後處於stopped狀態,在這種狀態下接收不到任何廣播。直到被啓動過(用戶打開或是其他應用調用)纔會脫離這種狀態,所以Android3.1之後
(1)、應用程序無法在安裝後自己啓動
(2)、沒有ui的程序必須通過其他應用激活才能啓動
,如它的Activity、Service、Content Provider被其他應用調用。
存在一種例外,就是應用程序被adb push you.apk /system/app/下是會自動啓動的,不處於stopped狀態。no broadcast receivedstopped state
具體說明見:
http://developer.android.com/about/versions/android-3.1.html#launchcontrols
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html

 

3、adb發送BOOT_COMPLETED
我們可以通過

命令發送BOOT_COMPLETED廣播,而不用重啓測試機或模擬器來測試BOOT_COMPLETED廣播,這條命令可以更精確的發送到某個package,如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章