使用android studio在每个月的最后一天在android中重复警报

时间:2016-08-03 04:53:36

标签: java android

有人可以帮我修改此代码,以便此功能可以在每个月的最后一天发出警报。目前能够获得当前月份,但应用程序没有在月末发出警报。感谢

@Nikem,请这是我的请求,如果可能的话,我可以更多地了解我如何检查闹钟时间是否已经过去,以及如何通过示例代码设置下一个闹钟,因为我刚接触编码机器人。 我的代码在这里:

Intent alarmIntent = new Intent(MainActivity.this,AlarmReceiver.class);         pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

//取消闹钟         manager.cancel(的PendingIntent);

    /* Set the alarm to start at 12:30 AM at the last day of every month */
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());

    int currentMonth = calendar.get(Calendar.MONTH);

    if (currentMonth == Calendar.JANUARY || currentMonth == Calendar.MARCH || currentMonth == Calendar.MAY || currentMonth == Calendar.JULY
            || currentMonth == Calendar.AUGUST || currentMonth == Calendar.OCTOBER || currentMonth == Calendar.DECEMBER) {

        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 30);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MONTH, currentMonth);
        calendar.set(Calendar.DAY_OF_MONTH, 31);
        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), //+1000*60,
                1000 * 60 * 5, pendingIntent);
    }

    if (currentMonth == Calendar.APRIL || currentMonth == Calendar.JUNE || currentMonth == Calendar.SEPTEMBER
            || currentMonth == Calendar.NOVEMBER) {

        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 30);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MONTH, currentMonth);
        calendar.set(Calendar.DAY_OF_MONTH, 30);
        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), //+ 1000*60,//changed from setrepeating to setInexactRepeating
                1000 * 60 * 5, pendingIntent);
    }

    if (currentMonth == Calendar.FEBRUARY) {//for feburary month)
        GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
        if (cal.isLeapYear(2016)) {//for leap year feburary month
            calendar.set(Calendar.HOUR_OF_DAY, 12);
            calendar.set(Calendar.MINUTE, 30);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.MONTH, currentMonth);
            calendar.set(Calendar.DAY_OF_MONTH, 29);
            manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), //+1000*60  changed from setrepeating to setInexactRepeating
                    1000 * 60 * 5, pendingIntent);
        } else { //for non leap year feburary month

            calendar.set(Calendar.HOUR_OF_DAY, 12);
            calendar.set(Calendar.MINUTE, 30);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.MONTH, currentMonth);
            calendar.set(Calendar.DAY_OF_MONTH, 28);
            manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), //+1000*60, //changed from setrepeating to setInexactRepeating
                    1000 * 60 * 5, pendingIntent);
        }
    }

感谢您的回应和慷慨支持。

0 个答案:

没有答案