Как сделать автозагрузку приложения на 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 варианта - не помогло. На телефоне есть настройка "Управление автозапуском", так же не помогло. Видел пример с хабра, стака - результат тот же. Если запускать самостоятельно, то приложение работает великолепно.


Ответы (0 шт):