Я перепробовал каждый возможный ответ на 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