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.

No se pudo establecer la fecha para el calendario en el administrador de alarmas.

Estoy utilizando Android Studio y el lenguaje Java para configurar el administrador de alarmas. Si no establezco la fecha, la función es correcta, pero si configuró la fecha, la alerta no se reproducirá o se ejecutará incorrectamente.
Este es mi código:

intent = new Intent(this, BootBroadcastReceiver.class);
pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 280192, intent, PendingIntent.FLAG_CANCEL_CURRENT);

Calendar calendar2 = Calendar.getInstance();

Calendar calendar = (Calendar) calendar2.clone();
calendar.setTimeInMillis(System.currentTimeMillis());

calendar.set(Calendar.YEAR, 1400);
calendar.set(Calendar.MONTH, 9);
calendar.set(Calendar.DAY_OF_MONTH,27);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 9);
calendar.set(Calendar.SECOND,0);

alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), pendingIntent);

Por favor, ayúdenme amigos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con su administrador de alarmas se debe a establecer una fecha incorrecta. Específicamente, en el código proporcionado, el calendario parece estar configurado en una fecha específica del año 1400. Esto probablemente no es el comportamiento esperado y está causando que la alerta no se reproduzca o se ejecute incorrectamente.

    Para solucionar este problema, debe asegurarse de que la fecha establecida en el calendario sea correcta y esté correctamente formateada. Una forma de hacerlo es utilizar el diálogo de selección de fecha incorporado de Android para permitir al usuario seleccionar una fecha. Aquí tienes un ejemplo:

    intent = new Intent(this, BootBroadcastReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(
            this.getApplicationContext(), 280192, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    
    // crear una instancia de calendario con la hora actual
    Calendar calendar = Calendar.getInstance();
    
    // utilizar un DatePickerDialog para permitir al usuario seleccionar una fecha
    DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            (view, year, month, dayOfMonth) -> {
                // establecer la fecha seleccionada en el calendario
                calendar.set(Calendar.YEAR, year);
                calendar.set(Calendar.MONTH, month);
                calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
    
                // establecer la hora del día para la alarma
                calendar.set(Calendar.HOUR_OF_DAY, 12);
                calendar.set(Calendar.MINUTE, 9);
                calendar.set(Calendar.SECOND, 0);
    
                // establecer la alarma
                alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), pendingIntent);
            },
            calendar.get(Calendar.YEAR),
            calendar.get(Calendar.MONTH),
            calendar.get(Calendar.DAY_OF_MONTH)
    );
    datePickerDialog.show();
    

    Con este código, se mostrará un diálogo de selección de fecha que permitirá al usuario seleccionar una fecha para establecer la alarma. Una vez que el usuario selecciona una fecha, se actualiza el calendario con la fecha seleccionada y se establece la alarma.

Comments are closed.