Установите ежемесячное повторяющееся уведомление в Android

Я хотел бы установить уведомление на 8 числа каждого месяца.

Вот что я сделал:

Intent myIntent = new Intent(remember.this, receiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(remember.this, 0, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);


        // Set the alarm to start at approximately 8th of 
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.DAY_OF_MONTH, 8);


        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                AlarmManager.INTERVAL_DAY*30, pendingIntent);

Однако то, что я получил, было постоянным уведомлением в течение нескольких минут. И это не проходит.

Буду признателен за вашу помощь здесь, так как я действительно не знаю, где что-то пошло не так.


person user4846394    schedule 29.04.2015    source источник
comment
Я установлю будильник на дату 8 в текущем месяце, который является прошедшей датой, и вызовет будильник. И что такое «это не проходит»?   -  person Harry's Lab    schedule 29.04.2015
comment
Вы установили будильник на 8 апреля, которое уже прошло, поэтому будильник срабатывает немедленно. Вы можете выполнить отладку, напечатав System.out.println(calendar.getTime());, что даст Wed Apr 08 18:22:13 IST 2015   -  person Psypher    schedule 29.04.2015
comment
'это не исчезает' == Означает, что уведомление продолжает появляться, даже если пользователь отменяет его.   -  person user4846394    schedule 29.04.2015
comment
@user4846394 user4846394 Можете ли вы также опубликовать код, используемый для отмены будильника?   -  person Psypher    schedule 30.04.2015


Ответы (1)


Установите календарь на предстоящее 8 число месяца.

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() , pendingIntent);

Внутри приемника.класс

public void onReceive(Context context, Intent intent) {
//do action needed
//invoke alarmManager in mainActivity
// cancel the previous alarm 
// set the new alarm for the next month
}
person Rakhi    schedule 29.04.2015