Android Studio: Календарь;Когда я пытаюсь добавить несколько повторяющихся событий в календарь Google, я получаю странный вывод - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь создать программу, которая получает классы пользователей для школы и автоматически создает для них события календаря на весь семестр.Но когда я запускаю программу, происходит несколько странных вещей.Во-первых, он всегда начинается 6 августа, хотя я указываю 20. Он также не помещает события в правильный день, который я указал, почти до месяца спустя!У меня есть фотография моих классов, которые я использовал.программа берет массив из первой строки, а затем помещает его в календарь.Потом достанется второй ряд и так далее и тому подобное.Таким образом, массив «Информация» никогда не содержит более 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

Вот несколько фотографий того, что делает мой календарь.Здесь он начинается 6 августа и имеет только один урок в этот день: Calendar_Image1

Вот еще одна картина, которая показывает, что мой календарь становится более «правильным», как я его назвал месяцпродолжается: Calendar_Image2

И, наконец, вот фотография моего календаря спустя более чем месяц после начала события с правильной разметкой (ПРИМЕЧАНИЕ: время по какой-либо причине не является правильнымно я сначала пытаюсь решить эту проблему): Calendar_Image3

...