我們知道,在Android中實(shí)現(xiàn)開啟啟動(dòng)的方法注冊一個(gè)靜態(tài)廣播去監(jiān)聽開機(jī)啟動(dòng)完畢的廣播,然后在接聽到開機(jī)廣播完畢后,啟動(dòng)Activity或者Service,方法如下:
首先,新建一個(gè)廣播監(jiān)聽器監(jiān)聽開機(jī)啟動(dòng)完畢的廣播
public class BootCompletedReceiver extends BroadcastReceiver {
private static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(action_boot)){
Intent intent=new Intent(context,MainActivity.class);
ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
然后,在AndroidManifest.xml靜態(tài)注冊該廣播
<receiver android:name=".BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
最后,在AndroidManifest.xml申請權(quán)限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
通過以上的方法,可以實(shí)現(xiàn)開啟啟動(dòng)APP,但是,這個(gè)方法有問題,以上的方法必須要在安裝APP后,手動(dòng)運(yùn)行一次APP后,APP才能接收到android.intent.action.BOOT_COMPLETED
廣播。
假如APP沒有Activity,只有Service,或者安裝完畢后無法手動(dòng)運(yùn)行,也不能通過其他的APP來啟動(dòng)此APP的Service或者Activity,如何安裝后,可以開機(jī)啟動(dòng)呢? PS:在可以修改Android系統(tǒng)代碼的基礎(chǔ)上,又有哪些方法呢?
APP接收不到BOOT_COMPLETED廣播可能的原因,有以下幾種:
BOOT_COMPLETED
對應(yīng)的action
和uses-permission
沒有一起添加sd
卡內(nèi),安裝在sd
卡內(nèi)的應(yīng)用是收不到BOOT_COMPLETED
廣播的Fast Boot
模式,這種模式下系統(tǒng)啟動(dòng)并不會(huì)發(fā)送BOOT_COMPLETED
廣播BOOT_COMPLETED
、ACTION_PACKAGE_ADDED
、CONNECTIVITY_ACTION
等等。Android3.1之后,系統(tǒng)為了加強(qiáng)了安全性控制,應(yīng)用程序安裝后或是(設(shè)置)應(yīng)用管理中被強(qiáng)制關(guān)閉后處于stopped狀態(tài),在這種狀態(tài)下接收不到任何廣播,除非廣播帶有FLAG_INCLUDE_STOPPED_PACKAGES
標(biāo)志,而默認(rèn)所有系統(tǒng)廣播都是FLAG_EXCLUDE_STOPPED_PACKAGES
的,所以就沒法通過系統(tǒng)廣播自啟動(dòng)了。
所以Android3.1之后:
不過,存在一種例外,就是應(yīng)用程序被adb push you.apk /system/app/
下是會(huì)自動(dòng)啟動(dòng)的,不處于stopped
狀態(tài)。
http://developer.android.com/...
http://commonsware.com/blog/2...
也就是說,解決方式就是將APK推送到/system/app
目錄下,或者打包系統(tǒng)時(shí),將APK放置到/system/app
中打包
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。