android - 无法在 Google 日历中插入多个事件

标签 android google-calendar-api calendarcontract

在我的应用程序中,我使用 CalendarContract API 来管理 Google 日历上的日历和事件。将多个事件添加到单个日历时,我遇到了一些问题。一般来说,这种方法的问题是每当我向谷歌日历添加新事件时,旧事件就会被新事件取代。这是我的方法的代码:

    public int addEvent(Context context, String color, int calendarId, String name, String location, String description, Date dateBegin, Date dateEnd) {
            long startMillisEpoch;
            long endMillisEpoch;

            Calendar beginTime = Calendar.getInstance();
            beginTime.setTime(dateBegin);
            startMillisEpoch = beginTime.getTimeInMillis();

            Calendar endTime = Calendar.getInstance();
            endTime.setTime(dateEnd);
            endMillisEpoch = endTime.getTimeInMillis();

            int eventColor;
            try {
                eventColor = Color.parseColor(color);
            } catch (Exception e) {
                // Get a random color
                Random random = new Random();
                eventColor = MyApp.RANDOM_COLORS[random.nextInt(MyApp.RANDOM_COLORS.length)];
            }
            ContentValues values = new ContentValues();
            values.put(CalendarContract.Events.CALENDAR_ID, calendarId);
            values.put(CalendarContract.Events.DTSTART, startMillisEpoch);
            values.put(CalendarContract.Events.DTEND, endMillisEpoch);
            values.put(CalendarContract.Events.TITLE, name);
            values.put(CalendarContract.Events.EVENT_LOCATION, location);
            values.put(CalendarContract.Events.DESCRIPTION, description);
            values.put(CalendarContract.Events.EVENT_COLOR, eventColor);
            // NOTE: Every event MUST have a timezone. Otherwise,
            // the application will throw an IllegalArgumentException
            values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());
            // Put default values
            values.put(CalendarContract.Events.ALL_DAY, NON_ALL_DAY);
            values.put(CalendarContract.Events.GUESTS_CAN_INVITE_OTHERS, 1);
            Uri calUri = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
            if (calUri != null) {
                try {
                    return Integer.parseInt(calUri.getLastPathSegment());
                } catch (Exception e) {
                    return -1;
                }
            }
            return -1;
        }

有解决此类问题的想法吗?亲切的问候。

最佳答案

根据API我猜你错过了 .execute()

Uri calUri = context.getContentResolver()
                    .insert(CalendarContract.Events.CONTENT_URI, values)
                    .execute();

还有 check this question

关于android - 无法在 Google 日历中插入多个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30236111/

相关文章:

java - 使用谷歌日历 API 发送邀请

java - 使用 Calendar Provider/Calendar.Contract 从特定日历和特定日期获取事件

android - 使用 CalendarContract,如何确定文本颜色?

android - 如何设计在纵向和横向方向上看起来都不错的布局?

android - 仅在 Android 和 Blackberry 中使用 Facebook 身份验证?

java - 按下输入按钮时阻止键盘打开?

Android ICS HTTP POST

api - google-calendar API通知事件提醒

google-calendar-api - 如何使用 Google Calendar API 在没有特定扩展属性的情况下搜索事件?