Автоматический запуск приложений Android 6.0.1 после загрузки

#android #kotlin #broadcastreceiver #android-6.0.1-marshmallow

#Android #kotlin #broadcastreceiver #android-6.0.1-marshmallow

Вопрос:

Я хочу запустить свое MainActivity сразу после загрузки устройства. Я пробовал несколько решений, но ни одно не работает. В настоящее время у меня есть это.

AndroidManifest.xml

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<receiver android:name="installer.common.InstallerBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
</receiver>
 

InstallerBroadcastReceiver.kt

 class InstallerBroadcastReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val i = Intent(context, MainActivity::class.java)
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        i.putExtra("test", 1)
        context.startActivity(i)
    }
}
 

MainActivity.kt

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)
    if (intent.hasExtra("test")) {
        someMethodHere()
    }
}
 

Любое предложение о том, что может быть не так?

Ответ №1:

попробуйте разделить intent-filter

     <intent-filter>
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
 

Комментарии:

1. привет, к сожалению, это не помогло, все еще не работает

Ответ №2:

Похоже, что есть какая-то проблема с устройством (zkteco), я получаю эту ошибку I/BackgroundManagerService: prevent from boot complete broadcast: com.mypackagename

На других устройствах, которые я пробовал, это работало.