从Android应用添加事件到Google日历

时间:2014-07-14 13:43:20

标签: android calendar google-calendar-api

我想从我的Android应用程序向Google日历添加一个事件。

首先,我选择谷歌日历的日历ID:

如果日历的名称包含" @ gmail.com"这就对了。 (我发现了更好的方法,如果你有更好的建议我。)

    private long getGoogleCalendarId() {

    String[] projection = new String[] { Calendars._ID, Calendars.NAME, Calendars.ACCOUNT_NAME, Calendars.ACCOUNT_TYPE,

    };
    Cursor calCursor = ctx.getContentResolver()
            .query(Calendars.CONTENT_URI, projection, Calendars.VISIBLE + " = 1", null, Calendars._ID + " ASC");

    if (calCursor.moveToFirst()) {
        do {
            long id = calCursor.getLong(0);
            String displayName = calCursor.getString(1);

            if (displayName.contains("@gmail.com")) {
                return id;
            }

        } while (calCursor.moveToNext());
    }
    return -1;

}

我保存了id,然后尝试添加一个示例事件:

public void addEventToGoogleCalendar() {

    long calId = googleCalendarId;
    if (calId == -1) {
        return;
    }

    long start = getNowDate();
    ContentValues values = new ContentValues();
    values.put(Events.DTSTART, start);
    values.put(Events.DTEND, start);
    values.put(Events.TITLE, "Some title");
    values.put(Events.CALENDAR_ID, calId);
    values.put(Events.EVENT_TIMEZONE, "Europe/Berlin");
    values.put(Events.DESCRIPTION, "The agenda or some description of the event");
    values.put(Events.ALL_DAY, 1);
    values.put(Events.ORGANIZER, "some.mail@some.address.com");
    Uri uri = ctx.getContentResolver().insert(Events.CONTENT_URI, values);

    long eventId = Long.valueOf(uri.getLastPathSegment());

    Log.i("adding event to Cal: ", eventId + "");

}

Logcat显示,我的添加有一些id-s,如386,387等,每次增加,所以我猜SOMETHING肯定会发生,否则我将不得不得到Exception或-1返回。

如果我去:https://www.google.com/calendar我无法看到我添加的新活动。

我刚开始研究这个Google日历,所以我的代码在任何地方都可能出错。 请在某些方面帮助我。甚至可能是我想做的事情吗?

1 个答案:

答案 0 :(得分:1)

将事件添加到Google日历中只会将其存储在本地,直到日历同步为止。 增加eventIds意味着将事件放入日历中。要检查此项,请在Android设备上的Play商店中安装Google日历应用,然后首先检查事件是否存在。您添加的所有事件都应该显示在那里。 如果一切顺利,还要确保" Sync Calendars"在Android设备设置中选中该选项,并确保您的设备已连接到互联网。只要同步日历,您的活动也会显示在calendar.google.com