簡體   English   中英

android:按月設置警報

[英]android : setting alarm on monthly basis

我正在開發一個Android應用程序,用於按月設置警報。 我已經為下個月提供了以下代碼。

private int GetTotalDays(int  monthRecvd1) {

    int totalDays=getDaysInMonthInPresentYear(taskMonth1);
    myDays=(totalDays-taskdate1)+taskdate1;
            }

                private int getDaysInMonthInPresentYear(int taskMonth1) 
                {
                    int days=0;
                    alarmCalendar.set(Calendar.HOUR, Hrs);  
                    alarmCalendar.set(Calendar.MINUTE, Mins);
                    alarmCalendar.set(Calendar.SECOND, 0);
                    alarmCalendar.set(Calendar.DATE, date);
                    alarmCalendar.set(Calendar.MONTH, Month);
                    alarmCalendar.set(Calendar.YEAR, year);
                    Long alarmTime = alarmCalendar.getTimeInMillis();
                    calendar.set(year, Month, date);
                    days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

                 }   

該代碼僅適用於下個月。 並且在下個月的第二個月不起作用。 例如,如果我將警報設置為4月,它將設置為5月,但不會設置為6月,依此類推。

誰能告訴我解決方案。

請幫忙! 謝謝!

使用setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)方法,而不僅僅是AlarmManager.set()。 您可以找到有關文檔的更多信息。

http://developer.android.com/reference/android/app/AlarmManager.html

編輯:它應該像這樣

public void onClick(View arg0) {
Intent serviceIntent = new Intent(AndroidAlarmService.this, this);
pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, serviceIntent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
long now = calendar.getTimeInMillis();
calendar.add(Calendar.DATE,calendar.getActualMaximum(Calendar.MONTH));
long repeat = calendar.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, now , repeat , pendingIntent);
}

嘗試這個..

alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
        SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY,
        AlarmManager.INTERVAL_DAY, intent);

解決方案是顯式強制這些文字為long類型,這是一個64位數字:

am.setRepeating(AlarmManager.RTC_WAKEUP,alarmTimefor30,30L * 1440L * 60000L,pi);

資源:

每月設置警報Android

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM