Как сделать автозагрузку приложения на Android?
Проблема следующая: хочу, чтобы мое приложение запускалось сразу после загрузки телефона. Нашел информацию, что можно прослушать BOOT_COMPLETED
и после запустить нужную мне активити. Вот что получилось:
class BootUpReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val target = Intent(context, MainActivity::class.java)
target.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(target)
}
}
В манифест занес необходимые разрешения
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Про receiver не забыл
<receiver android:enabled="true" android:name=".BootUpReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
В Logcat при запуске вижу это:
---------------------------- PROCESS STARTED (2473) for package com.example.video ----------------------------
2024-05-23 15:45:31.235 2473-2473 TetheringManager com.example.video I registerTetheringEventCallback:com.example.video
2024-05-23 15:45:31.241 2473-2473 WM-PackageManagerHelper com.example.video D Skipping component enablement for androidx.work.impl.background.systemjob.SystemJobService
2024-05-23 15:45:31.241 2473-2473 WM-Schedulers com.example.video D Created SystemJobScheduler and enabled SystemJobService
2024-05-23 15:45:31.290 544-928 ActivityTaskManager system_process I START u0 {flg=0x10000000 cmp=com.example.video/.MainActivity} from uid 10178
2024-05-23 15:45:31.291 544-928 ActivityTaskManager system_process W Background activity start [callingPackage: com.example.video; callingUid: 10178; isCallingUidForeground: false; callingUidHasAnyVisibleWindow: false; callingUidProcState: RECEIVER; isCallingUidPersistentSystemProcess: false; realCallingUid: 10178; isRealCallingUidForeground: false; realCallingUidHasAnyVisibleWindow: false; realCallingUidProcState: RECEIVER; isRealCallingUidPersistentSystemProcess: false; originatingPendingIntent: null; isBgStartWhitelisted: false; intent: Intent { flg=0x10000000 cmp=com.example.video/.MainActivity }; callerApp: ProcessRecord{b50321a 2473:com.example.video/u0a178}]
2024-05-23 15:45:32.755 2473-2496 System com.example.video W A resource failed to call close.
2024-05-23 15:45:34.604 544-2905 ActivityManager system_process I Killing 2473:com.example.video/u0a178 (adj 985): empty #17
---------------------------- PROCESS ENDED (2473) for package com.example.video ----------------------------
Пробовал на эмулятор Pixel 5 API 30 и устройстве Infinix X669D. В документации ничего толком не нашел, gpt предлагал 3 варианта - не помогло. На телефоне есть настройка "Управление автозапуском", так же не помогло. Видел пример с хабра, стака - результат тот же. Если запускать самостоятельно, то приложение работает великолепно.