Приложение не получает RECEIVE_BOOT_COMPLETED трансляцию - PullRequest
0 голосов
/ 10 апреля 2020

Я перепробовал каждый возможный ответ на SO, но ничего не помогло.

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

Я пытался создать службу, но это, похоже, не сработало, что, вероятно, было некомпетентно с моей стороны, однако я просто не понимаю, почему этот код не работает.

AndroidManifest:

<manifest 
(...)

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

<application
(...)

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

DeviceRebootReceiver:

class DeviceRebootReceiver : BroadcastReceiver() {
    override fun onReceive(context : Context?, intent : Intent?) {
        resetAlarms(context)
    }
}

fun resetAlarms (контекст: контекст):

fun resetAlarms(context : Context?) {
    suspend fun resetAlarmsCoroutine(context : Context) {
        val reminders = NotesDatabase.getInstance(context).notesDatabaseDAO.getAllActiveReminders()
        reminders.forEach {
            if (it.reminderTime > System.currentTimeMillis()) {
                createAlarm(it.reminderTime, it.reminderMessage,null,context)
            }
        }
    }

    CoroutineScope(Dispatchers.IO).launch {
        if (context != null) {
            resetAlarmsCoroutine(context)
        }
    }
}

Нет необходимости показывать Функция createAlarm (), потому что она работает нормально, НО, поскольку я видел, что AlarmManager может вызвать проблемы при перезагрузке, я создаю его экземпляр вот так:

val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...