Yesudass Moses Ответов: 1

Повторяющегося будильника broadcastreciever умысел строку дополнения не обновляются


У меня есть класс ниже, чтобы проверить, срабатывают ли мои сигналы тревоги в точное время, которое я запланировал, или оно отличается.

Я вызову метод SetAlarm внутри широковещательного приемника из MainActivity. Последовательные сигналы тревоги будут установлены самим приемником, установив текущее время в качестве его новой строки extra.

Сигналы тревоги работают нормально, за исключением того, что дополнительные строки намерения проблемы не обновляются. ScheduledTime всегда будет содержать начальное значение независимо от того, что я установил в методе setAlarm.

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Date currentTime = new Date(); 
        String ScheduledTime = ""; 
        if (null != intent) { //Null Checking
            ScheduledTime =   intent.getStringExtra("ScheduledTime");
            //intent.removeExtra("ScheduledTime");
        }
        String message  = "Current Time" + currentTime + ",  Scheduled Time was: " + ScheduledTime ; 
        //Show Notification 

        long alarmMillis =(10*60*1000) ; //Set Alarm after 10 minutes
        Long newTimeInMillis = System.currentTimeMillis() +  alarmMillis;
        currentTime.setTime(newTimeInMillis );
        setAlarm(context, newTimeInMillis , currentTime.toString());
    }

     public void setAlarm(Context context, Long timeMillis, String ScheduledTime)
    {
        AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(context, AlarmReceiver.class);
        i.putExtra("ScheduledTime", ScheduledTime);
        PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
        am.setExact(AlarmManager.RTC_WAKEUP, timeMillis, pi);
    }
}


Что я уже пробовал:

Я попытался удалить лишнее из широковещательного приемника (что я прокомментировал в блоке кода). Все еще не работает.

1 Ответов

Рейтинг:
2

Emmerel

Попробуйте изменить:

PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);

К
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, PendingIntentFlags.UpdateCurrent);