我想从我的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日历,所以我的代码在任何地方都可能出错。 请在某些方面帮助我。甚至可能是我想做的事情吗?
答案 0 :(得分:1)
将事件添加到Google日历中只会将其存储在本地,直到日历同步为止。 增加eventIds意味着将事件放入日历中。要检查此项,请在Android设备上的Play商店中安装Google日历应用,然后首先检查事件是否存在。您添加的所有事件都应该显示在那里。 如果一切顺利,还要确保" Sync Calendars"在Android设备设置中选中该选项,并确保您的设备已连接到互联网。只要同步日历,您的活动也会显示在calendar.google.com
中