2013-07-17 81 views
0

我正在開發一個應用程序,可以在指定的時間內發送短信,我已經添加了一些功能,但我很難過,而我添加功能,可以發送短信在每個月14日,我該如何做這個功能?android alarmmanager在指定日期每月重複

我已嘗試在此link上的答案代碼,但沒有奏效。

我相信這個問題是在AlarmManager類的setRepeating功能的間隔參數

mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), interval , pendingIntent); 

什麼可變的間距爲正確的值?

回答

1

這裏的時間間隔是兩個鬧鐘之間的時間(以毫秒爲單位)。

//e.g 
long interval=5*60*1000; 

mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), interval , pendingIntent); 

然後我的警報將在每5分鐘後重復一次。

編輯

int days=GetTotalDays(current_month); 
    interval=(days)*24*60*60*1000; 

    public int GetTotalDays(int current_month) 
    { 
    //here u can fetch current months total days 
    //suppose current month is 6(means july as it starts from 0) 
    //& u want to set alarm to next month(august) 
    //so get remaining days from calender of current month + day of next month 
    //e.g(14-7 to 14-8) so 
    //remaining days from calender of current month = 18(14-7 to 31-7) 
    //day of next month =14. 
    //so return would be (18+14-2=30).(-2.as it takes currentdate and nextdate also in calculation) 
int currentdate=14; 
int nextdate=14; 
int totalDays=getDaysInMonthInPresentYear(6); 
int myDays=(totalDays-currentdate)+nextdate; 
return myDays-2; 

    } 


public static int getDaysInMonthInPresentYear(int monthNumber) 
{ 
int days=0; 
if(monthNumber>=0 && monthNumber<12){ 
try 
{ 
Calendar calendar = Calendar.getInstance(); 
int date = 1; 
int year = calendar.get(Calendar.YEAR); 
calendar.set(year, monthNumber, date); 
days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
} catch (Exception e) 
{ 
if(e!=null) 
e.printStackTrace(); 
} 
} 
return days; 
} 
+0

謝謝您的回答一樣,但我知道這一點。間隔5分鐘是靜止的,但每個月的間隔可能不同。例如7月14日到7月14日可能與7月14日到8月14日不同。其他解決方案? –

+0

只是試圖把時間間隔= 30 * 24 * 60 * 60 ..我還沒有嘗試過......但每個月都有不同的日子,如28,30,31 ..所以可能BU可以獲取毫秒時間使用(新日期))。然後設置時間間隔。 –

+0

檢查我編輯的答案。 –

0
alarmManager .setInexactRepeating(AlarmManager.RTC_WAKEUP, 
        calendar1.getTimeInMillis() + AlarmManager.INTERVAL_DAY*30, 
        AlarmManager.INTERVAL_DAY*30, pendingIntent); 

你可以試試這個