怎樣在android系統啟動時自動運行自己的程序(RECEIVE_BOOT_COMPLETED)


關於Android3.1后Boot_COMPLETED廣播不響應的問題見ALEX的文章:Android3.1后Boot_COMPLETED廣播不響應的問題

感謝ALEX的指正。

android系統在Manifest.permission中有這樣一條RECEIVE_BOOT_COMPLETED的定義,當你自己的程序加入這個權限后,就可以在系統啟動完畢后收到一條系統的廣播,這個廣播的標志為ACTION_BOOT_COMPLETED,因此我們只要定義一個BroadcastReceiver用來接收這個廣播,然后加入自定義的動作即可。代碼如下:

 

  1. public class LocationLoggerServiceManager extends BroadcastReceiver {  
  2.     public static final String TAG = "customTag";  
  3.     @Override  
  4.     public void onReceive(Context context, Intent intent) {  
  5.         if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {  
  6.             ComponentName comp = new ComponentName(context.getPackageName(), MainActivity.class.getName());  
  7.               
  8.             context.startActivity(new Intent().setComponent(comp).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));  
  9.         } else {  
  10.             Log.e(TAG, "Received unexpected intent " + intent.toString());  
  11.         }  
  12.     }  
  13. }  
 

在AndroidManifest.xml中加入這個類的定義和權限說明

 

  1. <receiver  
  2.             android:name=".LocationLoggerServiceManager"  
  3.             android:enabled="true"  
  4.             android:exported="false"  
  5.             android:label="LocationLoggerServiceManager">  
  6.             <intent-filter>  
  7.                 <action  
  8.                     android:name="android.intent.action.BOOT_COMPLETED" />  
  9.             </intent-filter>  
  10.         </receiver>  
 

 

  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
 

 

OK,大功告成。這里演示的是啟動一個activity,同理你也可以啟動一個service.


REFERENCES:http://blog.csdn.net/roadog2006/article/details/5477294

http://blog.csdn.net/alex_hx/article/details/7501374


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM