Android Studio:日历;当我尝试向Google日历添加多个重复事件时,我得到奇怪的输出

时间:2018-11-25 00:05:14

标签: android-studio calendar google-calendar-api recurring-events

我正在尝试创建一个程序,该程序可以为用户上学,并为他们整个学期自动创建日历事件。但是,当我运行该程序时,会发生一些奇怪的事情。首先,即使我指定了20,它也总是从8月6日开始。它也不会在我指定的正确日期之前放置事件,直到将近一个月之后!我有我所用课程的图片。程序将第一行的数组放入日历中。然后获取第二行,依此类推。因此,数组“信息”一次最多可以容纳9个以上的项目。

public void makeCalendar(ArrayList<String> info)
{
    String hourOfDay = info.get(3);
    String hourDay = "";
    String minuteOfDay = "";
    if(hourOfDay.length() > 3)
    {
        hourDay = hourOfDay.substring(0,2);
        minuteOfDay = hourOfDay.substring(2,hourOfDay.length());
    }
    else
    {
        hourDay = hourOfDay.substring(0,1);
        minuteOfDay = hourOfDay.substring(1, hourOfDay.length());
    }
    int hour = Integer.parseInt(hourOfDay);
    int minute = Integer.parseInt(minuteOfDay);

    String byDay = getDaysFormat(info.get(6));
    System.out.println("\n" + byDay + "\n");
    TimeZone timeZone = TimeZone.getTimeZone("America/Chicago");
    Calendar beginTime = Calendar.getInstance(timeZone);
    System.out.println(calendar.get(Calendar.DATE));
    if(calendar.get(Calendar.MONTH) >= 8)
    {
        beginTime.set(calendar.get(Calendar.YEAR), Calendar.JULY, 20, hour, minute);
    }
    else
    {
        beginTime.set(calendar.get(Calendar.YEAR), 1, 5, hour, minute);
    }

        long sinMILI = beginTime.getTimeInMillis();

        values.put(CalendarContract.Events.CALENDAR_ID, 3);
        values.put(CalendarContract.Events.DTSTART, sinMILI);
        values.put(CalendarContract.Events.TITLE, info.get(0));
        values.put(CalendarContract.Events.DESCRIPTION, "You have class at " + info.get(7) + " room " + info.get(8) + "!");

        values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());

        values.put(CalendarContract.Events.DURATION, "+P1H");
        values.put(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=" + byDay + ";UNTIL=20181207T000000Z");

        values.put(CalendarContract.Events.HAS_ALARM, 1);
        values.put(CalendarContract.Events.ALL_DAY, false);
        String uString = "content://com.android.calendar/events";
        uri = cr.insert(Uri.parse(uString), values);
}

以下是课程时间表的图片:Schedule_Picture

以下是我的日历也正在做的几张照片。从8月6日开始,到那天只有一堂课:Calendar_Image1

这是另一张图片,显示我的日历随着月份的进行而变得更加“正确”:Calendar_Image2

最后,这是活动以正确的布局开始后一个多月后我的日历照片(注意:由于某种原因,时间也不正确,但我首先尝试处理此问题):{{ 3}}

0 个答案:

没有答案