2013-04-01 2 views
8

У меня есть уведомление в определенное время, увидеть мой код:уведомления в определенное время

//Create alarm manager 
AlarmManager alarmMgr0 = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 

//Create pending intent & register it to your alarm notifier class 
Intent intent0 = new Intent(this, AlarmReceiver_maandag_1e.class); 
intent0.putExtra("uur", "1e"); 
PendingIntent pendingIntent0 = PendingIntent.getBroadcast(this, 0, intent0, 0); 

//set timer you want alarm to work (here I have set it to 8.30) 
Calendar timeOff9 = Calendar.getInstance(); 
timeOff9.set(Calendar.HOUR_OF_DAY, 8); 
timeOff9.set(Calendar.MINUTE, 30); 
timeOff9.set(Calendar.SECOND, 0); 

//set that timer as a RTC Wakeup to alarm manager object 
alarmMgr0.set(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), pendingIntent0); 

Это работает идеально, за исключением одной вещи.

Уведомление устанавливается на 8.30 с менеджером сигнализации Если я запустить приложение после 8:30, 9:00, например, уведомление по-прежнему показывает ..

Есть ли вероятность того, что сигнал тревоги уходит в 8:30, но не позже?

Редактировать

Для тех, кто с той же проблемой, вот решение:

Поместите это в BroadcastReceiver:

long current_time = System.currentTimeMillis(); 

Calendar timeOff9 = Calendar.getInstance(); 
timeOff9.set(Calendar.HOUR_OF_DAY, 8); 
timeOff9.set(Calendar.MINUTE, 35); 
timeOff9.set(Calendar.SECOND, 0); 

long limit_time = timeOff9.getTimeInMillis(); 

if (current_time > limit_time) { 
    //nothing 
} else { 
    //show notification 
} 
+0

Проверьте текущее время и время будильника в классе вещательного приемника. Я этот класс вы можете решить, где должно быть уведомление или нет. –

+0

Знаете ли вы, как я могу сравнить текущее время с 8:30? Потому что, я думаю, вы имеете в виду что-то вроде: if (текущее время == 8:30) @Ilango – GromDroid

+0

Вы знаете свое время будильника и текущее время System.currentTimeMillis() и проверяете это время. –

ответ

2

Вы также можете попробовать этот метод сигнализации диспетчера:

public void setExact (int type, long triggerAtMillis, PendingIntent operation) 

Но он требует API уровня 19.

Смежные вопросы