Android 开发工具类 33_开机自运行

原理:该类派生自 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了。

原文地址:https://www.cnblogs.com/renzimu/p/4608368.html