原理:该类派生自 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 @Override 10 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
1 <receiver android:name=".BootBroadcastReceiver"> 2 <intent-filter> 3 <action android:name="android.intent.action.BOOT_COMPLETED" /> 4 </intent-filter> 5 </receiver>
向系统注册了一个receiver,子节点 intent-filter 表示接收 android.intent.action.BOOT_COMPLETED消息。
添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
【注】在多数情况下,要自动运行的不是有界面的程序,而是在后台运行的service。此时,就要用 startService 来启动相应的 service了。
时间: 2024-10-01 11:22:19