Android開機啟動Activity或Service

jopen 10年前發布 | 14K 次閱讀 Android Android開發 移動開發

【原理】

    當Android系統完成BOOT階段之后,就會發送一條名為 ACTION_BOOT_COMPLETED 的廣播,我們便可在一個BroadcastReceiver中捕獲這條廣播,然后啟動我們的Activity或者Service,當然要注意的是,我們的 application必須具有捕獲該廣播的權限,下面請看具體步驟:

【步驟一】首先要有一個用于開機啟動的Activity或者Service,這里以系統自己創建的最簡單的Activity為例進行講解。

  1. package com.billhoo.study; 
  2.  
  3. import android.app.Activity; 
  4. import android.os.Bundle; 
  5.  
  6. public class BootTestActivity extends Activity { 
  7.     /** Called when the activity is first created. */ 
  8.     @Override 
  9.     public void onCreate(Bundle savedInstanceState) { 
  10.         super.onCreate(savedInstanceState); 
  11.         setContentView(R.layout.main); 
  12.     } 

 

【步驟二】我們要編寫一個BroadcastReceiver用以捕獲ACTION_BOOT_COMPLETED這條廣播,并在捕獲之后啟動我們要啟動的Activity。

注意:必須在intent中添加Intent.FLAG_ACTIVITY_NEW_TASK標記,這就是我之前老是啟動失敗的原因。至于為什么,我還在研究SDK doc,明白了之后就回來補上。

  1. package com.billhoo.study; 
  2.  
  3. import android.content.BroadcastReceiver; 
  4. import android.content.Context; 
  5. import android.content.Intent; 
  6.  
  7. public class BootCompletedReceiver extends BroadcastReceiver { 
  8.   @Override 
  9.   public void onReceive(Context context, Intent intent) { 
  10.     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) 
  11.     { 
  12.       Intent newIntent = new Intent(context, BootTestActivity.class); 
  13.       newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  //注意,必須添加這個標記,否則啟動會失敗 
  14.       context.startActivity(newIntent);
  15.        
  16.     }       
  17.   } 

【步驟三】在AndroidManifest.xml配置文件中注冊我們的BroadcastReceiver

  1. <receiver android:name=".BootCompletedReceiver"> 
  2.     <intent-filter> 
  3.         <action android:name="android.intent.action.BOOT_COMPLETED" /> 
  4.     </intent-filter> 
  5. </receiver> 

 

【步驟四】在AndroidManifest.xml配置文件中添加允許我們捕獲該廣播的權限

  1. <!-- permissions --> 
  2. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
轉自http://billhoo.blog.51cto.com/2337751/761230
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!