在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