(轉自:http://heisedeyueya.iteye.com/blog/1157288)
在Windows平臺中我們一定知道很多程序會開機自啓動,那麼我們的android應用程序如何實現開機自啓動的呢?其實非常的簡單,只要用android的廣播機制就可以了,因爲當android系統啓動的時候會發送一個廣播出去,所以關心這個廣播的應用程序就會接收這個廣播了。
那麼首先,準備好我們的測試用的Activity
- package org.iSun.heisedeyueya;
- import android.app.Activity;
- import android.os.Bundle;
- public class AutoStartActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- System.out.println("boot completed");
- }
- }
第二步,我們只需要自定義一個廣播的接收者BootCompleteReceiver讓它從BroadcastReceiver繼承並且重寫onReveiver方法
- package org.iSun.heisedeyueya;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- public class BootCompleteReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- Intent start = new Intent();
- start.setClass(context, AutoStartActivity.class);
- start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startService(start);
- }
- }
第三步就是註冊這個廣播接收者讓它接收"android.intent.action.BOOT_COMPLETED"這個廣播。
- <receiver android:name=".BootCompleteReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"></action>
- </intent-filter>
- </receiver>
那麼通過上面的三步開機自啓動就完成了
///////////////////////////////////////
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction().toString();
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
Toast.makeText(context, "重新啓動完畢,TTS將於10秒後自動啓動", Toast.LENGTH_LONG).show();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
intent.setClass(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}