2013-05-11 100 views
0

我在早上8點使用下面的代碼開始報警,每1分鐘重複一次。我想在下午12點停止這個警報。我開始報警這樣的:如何在特定時間停止重複報警

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
PendingIntent loggerIntent1 = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0); 
Calendar timeOff9 = Calendar.getInstance(); 
timeOff9.set(Calendar.HOUR_OF_DAY, 08); 
timeOff9.set(Calendar.MINUTE, 00); 
timeOff9.set(Calendar.SECOND, 00); 


long duration = interval * 60 * 1000; 
manager.setRepeating(AlarmManager.RTC_WAKEUP,timeOff9.getTimeInMillis(), duration, loggerIntent1); 

,並使用此代碼停止:

Calendar timeOff = Calendar.getInstance(); 
timeOff.set(Calendar.HOUR_OF_DAY,12); 
timeOff.set(Calendar.MINUTE,00); 
timeOff.set(Calendar.SECOND, 00); 

manager.set(AlarmManager.RTC_WAKEUP,timeOff.getTimeInMillis(), loggerIntent1); 
manager.cancel(loggerIntent1); 
loggerIntent1.cancel(); 

但停止原因的應用程序代碼的工作方式不對。 我正在編寫代碼,在第一次報警後立即停止報警。這是問題嗎? 我是否需要寫另一個警報。請指導。

+0

那麼你可能需要另一個報警結束它參考http://stackoverflow.com/questions/23829176/cancel-repeating-alarm-at-specific-time – 2017-01-03 07:25:03

回答

0

也許有另一種邏輯,你可以試試看?

想象一下,繼續您的第一部分代碼,您觸發每個duration的意圖。

但是在你的AlarmReceiver.class中,這將是檢查當前時間的那個,並且當時間超過12pm時執行AlarmManager.cancel()。