在Windows 平台下安装一些 软件 时,经常会遇到一些软件带有自启动设置。通常我会关掉这
些功能,除非对于某些重要的程序有必要开启这项功能。在 Android  平台也可以方便的给程
序添加自启动设置,下边给出了具体的实现方法:
首先需要在Manifest 中做如下修改和补充:

? 

View Code XML 

<receiver android:enabled="true" android:name=".BootUpReceiver" 

android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 

<intent-filter> 

<action android:name="android.intent.action.BOOT_COMPLETED" /> 

<category android:name="android.intent.category.DEFAULT" /> 

</intent-filter> 

</receiver>


程序主体中需要实现在Manifest 中声明的BroadcastReceiver 类:

public class BootUpReceiver extends BroadcastReceiver{ 

@Override 

public void onReceive(Context context, Intent intent) { 

Intent i = new Intent(context, MyActivity.class); 

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

context.startActivity(i); 

} 

}


1. 定义一个BroadcastReceiver
代码:

public class BootReceiver extends BroadcastReceiver { 

public void onReceive(Context ctx, Intent intent) { 

Log.d("BootReceiver", "system boot completed"); 

//start activity 

String action="android.intent.action.MAIN"; 

String category="android.intent.category.LAUNCHER"; 

Intent myi=new Intent(ctx,CustomDialog.class); 

myi.setAction(action); 

myi.addCategory(category); 

myi.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

ctx.startActivity(myi); 

//start service 

Intent s=new Intent(ctx,MyService.class); 

ctx.startService(s); 

} 

}


2、配置Receiver 的许可,允许接收系统启动消息,在AndroidManifest.xml 中:

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


3、配置Receiver,可以接收系统启动消息,在AndroidManifest.xml 中

<receiver android:name=".app.BootReceiver"> 

<intent-filter> 

<action android:name="android.intent.action.BOOT_COMPLETED"/> 

<category android:name="android.intent.category.HOME" /> 

</intent-filter> 

</receiver>


4、启动模拟器,可以看到系统启动后,弹出一个对话框。
例一
如果您在 开发 一个需要实时更新数据的应用程序,当有新的数据的时候提醒用户查看新的数
据,那么您需要在后台开起一个Service,然后实时的去网络上获取数据,但是如果用户关
机重启,您的Service 可能就消失了!那么怎么样保证开机后你的Service 还活跃的在用户
的手机里偷偷的从网络上获取数据呢?
很简单,我们只要实现开机自启动即可,Android 实现开机自启动可能是移动操作系统中最
简单的了,我们只需要监听一个开机启动的Broadcast(广播)即可。首先写一个Receiver
(即广播监听器),继承BroadcastReceiver,如下所示:

public class BootReceiver extends BroadcastReceiver { 

private PendingIntent mAlarmSender; 

@Override 

public void onReceive(Context context, Intent intent) { 

// 在这里干你想干的事(启动一个Service,Activity 等),本例是启动一个定时调度程序, 

每30 分钟启动一个Service 去更新数据 

mAlarmSender = PendingIntent.getService(context, 0, new Intent(context, 

RefreshDataService.class), 0); 

long firstTime = SystemClock.elapsedRealtime(); 

AlarmManageram=(AlarmManager)context.getSystemService(Activity.ALARM_SERVICE); 

am.cancel(mAlarmSender); 

am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 30*60*1000, 

mAlarmSender); 

} 

}


接下来,我们只需要在应用程序配置文件AndroidManifest.xml 中注册这个Receiver 来监
听系统启动事件即可,如下所示:

<receiver android:name=".service.BootReceiver"> 

<intent-filter> 

<!-- 系统启动完成后会调用--> 

<action android:name="android.intent.action.BOOT_COMPLETED"> 

</action> 

</intent-filter> 

</receiver>


例二:
android开机启动service,适合闹钟程序实例中一共三个类

1.public class YourReceiver extends BroadcastReceiver 

2.public class ServiceTest extends Service 

3.public class ShowActivity extends Activity