借鉴了无数个app开机自启的博客,最后终于把这个程序跑通了。
自定义广播:
public class MyReceiver extends BroadcastReceiver {
static final String ACTION = "android.intent.action.BOOT_COMPLETED"; //AndroidManifest.xml 中注册的action
@Override
public void onReceive(Context context, Intent intent) {
//捕获到
if (intent.getAction().equals(ACTION)){
Intent mainActivityIntent = new Intent(context,MainActivity.class);
//要启用的activity
mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//设置此标志使activity将成为此历史堆栈上新任务的开始
context.startActivity(mainActivityIntent);
}
}
}
AndroidManifest.xml :
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> //获取权限
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/> //receiver捕获特定广播的字段(此处为开机广播)
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
实验虚拟机: