- <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,不知道把目标版本设置低一些是否有影响。