當Android系統完成引導階段時,它將發送壹個名為ACTION_BOOT_COMPLETED的廣播,因此我們可以在BroadcastReceiver中捕獲這個廣播,然後開始我們的活動或服務。當然,需要註意的是,我們的應用程序必須有權捕獲這個廣播。請看下面的具體步驟:
第壹步是啟動壹個活動或服務。這裏以系統自身創建的最簡單的活動為例進行說明。
包com . bill hoo . study;
導入Android . app . activity;
導入Android . OS . bundle;
公共類BootTestActivity擴展Activity {
/**首次創建活動時調用。*/
@覆蓋
public void on create(Bundle saved instancestate){
super . oncreate(savedInstanceState);
setContentView(r . layout . main);
}
}
第二步:我們需要編寫壹個BroadcastReceiver來捕獲廣播ACTION_BOOT_COMPLETED,並在捕獲之後啟動我們想要啟動的活動。
註意:您必須添加標記意圖。意圖中的Flag _ Activity _ New _ Task,這也是我之前總是啟動失敗的原因。至於為什麽,我還在學習SDK doc,等我理解了再回來補。
包com . bill hoo . study;
導入Android . content . broadcast receiver;
導入Android . content . context;
導入Android . content . intent;
公共類BootCompletedReceiver擴展BroadcastReceiver {
@覆蓋
公共void onReceive(上下文語境,意圖意圖){
if (intent.getAction()。等於(意圖。ACTION_BOOT_COMPLETED))
{
Intent new Intent = new Intent(context,bootestactivity . class);
newIntent.addFlags(Intent。標誌_活動_新_任務);?//註意,必須添加這個標簽,否則啟動會失敗。
context . start activity(new intent);
}
}
}
步驟3在AndroidManifest.xml配置文件中註冊我們的BroadcastReceiver。
& lt接收者android:name= "。BootCompletedReceiver " & gt
& lt意向過濾器& gt
& ltaction Android:name = " Android . intent . action . boot _ COMPLETED "/& gt;
& lt/intent-filter & gt;
& lt/receiver & gt;
步驟4:在AndroidManifest.xml配置文件中添加允許我們捕獲廣播的權限。
& lt!-權限-& gt;
& ltuses-permission Android:name = " Android . permission . receive _ BOOT _ COMPLETED "/& gt;
我之前輸錯了uses-permission作為權限,結果壹直提示以下錯誤:
權限拒絕:接收意圖{ act = Android . Intent . action . boot _ COMPLETED flg = 0x 8000010(has extras)}到com.example.boottest/。bootcompletedreceiver需要Android . permission . receive _ boot _ completed due to sender null(uid 1000)重啟虛擬機,就大功告成了。
下面附上完整的AndroidManifest.xml供您理解和參考。
& lt?xml版本="1.0 "編碼="utf-8 "?& gt
& lt清單xmlns:Android = "/apk/RES/Android "
package = " com . bill hoo . study " Android:version code = " 1 "
Android:version name = " 1.0 " & gt;
& ltuses-SDK Android:minSdkVersion = " 4 "/& gt;
& lt!-權限-& gt;
& ltuses-permission Android:name = " Android . permission . receive _ BOOT _ COMPLETED "/& gt;
& lt應用Android:icon = " @ drawable/icon " Android:label = " @ string/app _ name " & gt;
& lt!-活動->;
& lt活動android:name= "。bootestactivity " Android:label = " @ string/app _ name " & gt;
& lt意向過濾器& gt
& ltaction Android:name = " Android . intent . action . main "/& gt;
& lt類別Android:name = " Android . intent . category . launcher "/& gt;
& lt/intent-filter & gt;
& lt/activity & gt;
& lt!-接收者-& gt;
& lt接收者android:name= "。BootCompletedReceiver " & gt
& lt意向過濾器& gt
& ltaction Android:name = " Android . intent . action . boot _ COMPLETED "/& gt;
& lt/intent-filter & gt;
& lt/receiver & gt;
& lt/application & gt;
& lt/manifest & gt;