<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".BootCompletedReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
class BootCompletedReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
startApp(context)
Log.i("ABCD", "系统启动完成")
}
}
/** 启动app */
private fun startApp(context: Context) {
val appContext = context.applicationContext
val intent = Intent(appContext, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
appContext.startActivity(intent)
}
}
完整示例代码:https://gitee.com/daizhufei/receive-boot-complete.git,在公司的Android 7.1.1的手机试验,能成功监听到系统启动,并完成App的自动启动。需要注意的是,应用安装后,如果一次都没有启动过,关机重启后是监听不到系统启动事件的,必须手动启动过app之后,以后再启动系统时就可以监听到了。在oppo A55 5G Android 11中,怎么设置都监听不到系统启动,实验时是使用目标版本为Android 11,不知道把目标版本设置低一些是否有影响。