Мне бы хотелось, чтобы мое приложение Flutter/Kotlin могло автоматически запускаться и отображаться при запуске моего устройства с Android 9 и более поздних версий.
Я пробовал BroadcastReceiver, но он не работает. не работает, я получаю логи, но приложение визуально не запускается.
Я добавляю авторизацию в свой манифест
и объявление моего BroadcastReceiver
Я создал два класса: класс BroadcastReceiver, который получает boot_complete
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import androidx.work.WorkRequest
class BootBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent != null) {
if(intent.action == Intent.ACTION_BOOT_COMPLETED) {
Log.d("BootBroadcastReceiver", "Boot completed. Scheduling app launch.")
// Planifier un travail pour démarrer l'application après un délai
val workRequest: WorkRequest = OneTimeWorkRequest.Builder(AppLaunchWorker::class.java).build()
if (context != null) {
WorkManager.getInstance(context).enqueue(workRequest)
}
}
}
}
}
и класс AppLaunchWorker, запускающий приложение
import android.content.Context
import android.content.Intent
import androidx.work.Worker
import androidx.work.WorkerParameters
import io.flutter.embedding.android.FlutterActivity
class AppLaunchWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
override fun doWork(): Result {
// Lancer FlutterActivity après que le système ait démarré
val launchIntent = FlutterActivity.createDefaultIntent(applicationContext)
launchIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK // Nécessaire pour démarrer l'activité depuis un contexte non interactif
applicationContext.startActivity(launchIntent)
// Retourner un résultat de succès
return Result.success()
}
}
я вижу журнал, но приложение не открывается визуально
Log.d("BootBroadcastReceiver", "Boot completed. Scheduling app launch.")
Подробнее здесь: https://stackoverflow.com/questions/792 ... evice-boot