如何在Android中为用户的日历创建或添加不可编辑的事件?

时间:2018-02-23 19:13:25

标签: android google-calendar-api

我看过这些链接是为Android中的Google日历添加活动,我可以添加活动,但我怎么能让用户不可编辑

How to add calendar events in Android?

https://developer.android.com/guide/topics/providers/calendar-provider.html#add-event

添加活动的代码。

String eventTitle = "Jazzercise";
long calID = 3;
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2018, 2, 18, 6, 00);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2018, 2, 18, 8, 00);
endMillis = endTime.getTimeInMillis();

ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, startMillis);
values.put(CalendarContract.Events.DTEND, endMillis);
values.put(CalendarContract.Events.TITLE, "Jazzercise");
values.put(CalendarContract.Events.DESCRIPTION, "Group workout");
values.put(CalendarContract.Events.CALENDAR_ID, calID);
values.put(CalendarContract.Events.EVENT_TIMEZONE, "America/Los_Angeles");
values.put(CalendarContract.Events.ORGANIZER, "google_calendar@gmail.com");

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) {
    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
    long eventID = Long.parseLong(uri.getLastPathSegment());
    Log.i("Calendar", "Event Created, the event id is: " + eventID);
    Snackbar.make(view, "Jazzercise event added!", Snackbar.LENGTH_SHORT).show();
} else {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_CALENDAR}, MY_PERMISSIONS_REQUEST_WRITE_CALENDAR);
}

上述代码中的这一行实际上会使事件在创建事件后的短暂时间内不被用户编辑,之后 用户将能够编辑该事件。

values.put(CalendarContract.Events.ORGANIZER, "google_calendar@gmail.com");

例如,在我使用谷歌航班预订航班后,此航班的活动将自动添加到我的谷歌日历中,但我无法编辑活动详细信息,如活动名称,时间等。我只能删除如果我愿意的话。因此,很明显可以创建/添加事件到用户的谷歌日历,但我只是不知道如何做到这一点。有谁知道怎么做?

加号用户不应该选择接受或拒绝该活动。唯一的选择是在将其添加到用户日历后将其删除。

1 个答案:

答案 0 :(得分:5)

当您对用户Google日历帐户进行身份验证时,您将以用户身份登录。当您创建事件时,当用户自己创建事件时,它们就是事件的所有者。您无法以其他人作为所有者创建活动。

您应该考虑做的是将事件添加到您自己的日历中并邀请这些人参加活动,然后他们可以选择将活动添加到他们的日历中。他们将是您活动的嘉宾而非所有者,然后将无法编辑活动。

您可以在创建事件后尝试更新事件并将自己添加为所有者,并更新用户将其设置为来宾。但是我不确定是否可以在某人的日历中将某人设为嘉宾。