es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El “AlarmManager” de Android no programa eventos.

Tengo un ejemplo pequeño de Android con un receptor registrado en mi actividad (por lo que no hay una entrada de receptor en AndroidManifest.xml), pero por alguna razón no recibo nada.

import android.app.AlarmManager
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.getSystemService
import kotlin.time.ExperimentalTime

class Receptor: BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        Log.d("Test", "ACCIÓN: ${intent?.action}")
    }
}

@ExperimentalTime
class Prueba: AppCompatActivity() {

private val receptor = Receptor()
private lateinit var administradorAlarmas: AlarmManager

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    administradorAlarmas = getSystemService()!!

    val filtro = IntentFilter()

    this.registerReceiver(this.receptor, filtro)

    val intent = Intent(this, Receptor::class.java).apply {
        action = "PRUEBA"
    }

    val intentPendiente = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)

    val marcaDeTiempo = System.currentTimeMillis() + 10000

    Log.d("Test", "PROGRAMAR: $marcaDeTiempo")

    administradorAlarmas.setExact(AlarmManager.RTC_WAKEUP, marcaDeTiempo, intentPendiente)

}

override fun onDestroy() {
    super.onDestroy()

    this.unregisterReceiver(this.receptor)
}


}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema esté relacionado con la creación incorrecta del PendingIntent. Prueba cambiando la bandera a PendingIntent.FLAG_UPDATE_CURRENT en lugar de PendingIntent.FLAG_IMMUTABLE al crear el PendingIntent.

Comments are closed.