2016-08-23 38 views
1

我試圖實現同時每天通知的鬧鈴。它工作正常。但是當我再次設置警報時,它會在現場通知我,而不用等待時間,因爲設置警報的時間已經過去了。但是,當我將Calendar.DATE更改爲Calendar.DAYS_OF_MONTH時,它不通知我。所以,任何人都可以幫助我,我錯了。我在下面分享我的代碼。每日鬧鈴問題,Calendar.DATE和Calendar.DAYS_OF_MONTH區別

 public void setNotification() { 
     PendingIntent pendingIntent = createPendingIntent(); 

     Calendar calendarToSet=Calendar.getInstance(); 
     Calendar currentTime=Calendar.getInstance(); 
     calendarToSet.set(Calendar.HOUR,10); 
     calendarToSet.set(Calendar.MINUTE,0); 
     calendarToSet.set(Calendar.SECOND,0); 
     calendarToSet.set(Calendar.AM_PM,Calendar.AM); 

     if(calendarToSet.before(currentTime)) 
     { 
      calendarToSet.set(Calendar.DATE,1); 
     } 


     AlarmManager alarmManager = (AlarmManager) MyAppManager.context.getSystemService(Context.ALARM_SERVICE); 

     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendarToSet.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent); 
     // Toast.makeText(MyAppManager.context, "set", Toast.LENGTH_LONG).show(); 
} 

     public PendingIntent createPendingIntent() { 
     Intent intent = new Intent(MyAppManager.context, TaffaquhFiddinBroadCastReceiver.class); 
     intent.putExtra("key", "What_to_say_upon_completing_ablution"); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(MyAppManager.context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     return pendingIntent; 

    } 

什麼,我試圖做的是設置報警第二天如果時間已過,請幫助。

Calendar.DATECalendar.DAYS_OF_MONTH之間的區別是什麼?

+1

看看user13的答案。用'set',你設置月份的日期,在你的情況下是第一天(例如01.01。)。使用「添加」,您只需在當前日曆日添加一天。 – Opiatefuchs

+0

所以使用set。將我的日期設置爲本月的第1天?如果是這樣,那麼爲什麼它沒有等待第一天通知我 – FaisalAhmed

+1

是的,它確實和android的alarmManager allways開始,如果你當前設置的日期是過去...這就是爲什麼你立即得到警報。 .. – Opiatefuchs

回答

3

問題是你是設置日字段的Calendar實例,而不是加入一天吧。

更改如下:

calendarToSet.set(Calendar.DATE, 1); 

要這樣:

calendarToSet.add(Calendar.DATE, 1); 

也就是Calendar.DATECalendar.DAYS_OF_MONTH之間的區別?

它們是一樣的,DATE只是DAY_OF_MONTH的同義詞。

Calendar類的源代碼:

public static final int DATE = 5; 
public static final int DAY_OF_MONTH = 5; 

正如你所看到的,它們代表了相同的值。

+0

Calendar.Date和Calendar.Days_Of_Month有什麼區別? – FaisalAhmed

+0

看到我編輯的答案。 – earthw0rmjim

+0

感謝它真的幫助完整 – FaisalAhmed