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

问题描述 投票:11回答:1

我看过这些链接是为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, "[email protected]");

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, "[email protected]");

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

此外,用户不应该选择接受或拒绝该事件。唯一的选择是在将其添加到用户日历后将其删除。

android google-calendar-api
1个回答
5
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.