public static void insertEventWithName(Context ctx, long id, String eventName, String descriptionEvent, Calendar beginTime) {
intent.putExtra(Events.CALENDAR_ID, (int) id);
Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setData(Events.CONTENT_URI);
intent.putExtra(Events.TITLE, eventName);
intent.putExtra(Events.DESCRIPTION, descriptionEvent);
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,beginTime.getTimeInMillis());
intent.putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE);
intent.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
ctx.startActivity(intent);
}
为了插入事件,我使用此代码,但始终设置上次使用的日历。 我希望看到带有我身份的日历
答案 0 :(得分:0)
尝试添加日历名称而不是其ID。
intent.putExtra(CalendarContract.Calendars.ACCOUNT_NAME, "test@gmail.com")
对我来说,它会在打开所选日历应用程序时设置特定日历。
答案 1 :(得分:0)
我可以通过调用intent setData
来调用特定日历,如下所示:
intent.setData(buildCalUri());
其中buildCalUri返回用于创建特定日历的URI
public static Uri buildCalUri() {
return CalendarContract.Calendars.CONTENT_URI.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, ACCOUNT_NAME)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, ACCOUNT_TYPE).build();
答案 2 :(得分:0)
Intent intent = new Intent(Intent.ACTION_EDIT)
.setType("vnd.android.cursor.item/event")
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.Calendars.NAME, APPOINTMENT_CALENDAR_NAME)
.putExtra(CalendarContract.Calendars.ACCOUNT_NAME, EMAIL)
.putExtra(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, APPOINTMENT_CALENDAR_NAME)
.putExtra(CalendarContract.Events.CALENDAR_ID, getCalendarID(EMAIL, APPOINTMENT_CALENDAR_NAME));
startActivity(intent);
尝试提供更多参数以便区分。我也遇到了同样的问题但是当我提供上述细节时,它会重定向到正确的日历。希望它有所帮助。