原理:该类派生自 BroadcastReceiver,重载方法 onReceive ,检测接收到的 Intent 是否符合 BOOT_COMPLETED,如果符合,则启动用户Activity。
1 import android.content.BroadcastReceiver; 2 import android.content.Context; 3 import android.content.Intent; 4 5 public class BootBroadcastReceiver extends BroadcastReceiver { 6 7 static final String ACTION = "android.intent.action.BOOT_COMPLETED"; 8 9 @Override10 public void onReceive(Context context, Intent intent) {11 12 if (intent.getAction().equals(ACTION)){13 Intent mainActivityIntent = new Intent(context, MainActivity.class);14 mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);15 context.startActivity(mainActivityIntent);16 }17 }18 }
配置文件:AndroidManifest.xml
12 3 54
向系统注册了一个receiver,子节点 intent-filter 表示接收 android.intent.action.BOOT_COMPLETED消息。
添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
【注】在多数情况下,要自动运行的不是有界面的程序,而是在后台运行的service。此时,就要用 startService 来启动相应的 service了。