2013-04-01 78 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分起飛,但不晚點?

編輯

對於有同樣的問題的人,這裏是解決方案:

將這個在您的廣播接收器:

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.