开机自动运行程序原理很简单,就接收系统“开机已完成”这一广播,收到广播后就可以启动 Service 或 Activity 了。
我们需要继承 BroadcastReceiver 这个广播接收者类,重写 onReceive 方法,这个方法在收到广播后由系统调用,我这里是收到广播后启动一个 Service。
public class BootBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Intent intent = new Intent(arg0, TestService.class);
arg0.startService(intent);
}
}
当然要注意,接收开机已完成广播需要 RECEIVE_BOOT_COMPLETED 权限,还需要在 <application> 节点中指定实例化广播接收者 BootBroadcastReceiver 对象的意图动作,也就是 BOOT_COMPLETED。
<receiver android:name=".BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
就是这样了。