3
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);
}

为了插入事件,我使用此代码,但始终设置为 last used calendar 。我想用我的身份证查看日历

4

3 回答 3

0

尝试添加日历名称而不是其 ID。

 intent.putExtra(CalendarContract.Calendars.ACCOUNT_NAME, "test@gmail.com")

对我来说,它会在打开选定的日历应用程序时设置特定的日历。

于 2015-07-16T22:58:52.703 回答
0

我可以通过调用意图来调用特定的日历,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();
于 2016-07-19T09:17:13.537 回答
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);

尝试给它更多的参数来区分。我也面临同样的问题,但是当我提供上述详细信息时,它重定向到正确的日历。希望能帮助到你。

于 2017-12-01T11:44:14.050 回答