Как создать или добавить нередактируемое событие в календарь пользователя на Android?

Я просмотрел эти ссылки для добавления события в календарь Google на Android, и я могу добавлять события, но как я могу сделать событие недоступным для редактирования пользователем?

Как добавить события календаря в 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]");

Например, после того, как я заказал рейс с рейсом Google, событие этого рейса будет автоматически добавлено в мой календарь Google, но я не могу редактировать данные о событии, такие как имя события, время и т.д. Я могу удалить его, только если я хочу. Таким образом, очевидно, что можно создать/добавить событие в календарь Google Google, но я просто не знаю, как это сделать. Кто-нибудь знает как это сделать?

Кроме того, у пользователя не должно быть возможности принять или отклонить событие. Единственный вариант - удалить его после добавления в календарь пользователя.

Ответ 1

когда вы аутентифицируете учетную запись календаря Google пользователей, вы вошли в систему как пользователь. когда вы создаете событие, его как сам пользователь создает событие, а затем он является владельцем события. Вы не можете создать мероприятие с кем-то еще в качестве владельца.

Что вы должны делать, это добавлять события в свой календарь и приглашать этих людей на мероприятие, тогда они могут выбрать, чтобы добавить событие в свой календарь. Они будут гостями вашего мероприятия, а не владельцем, а затем не смогут редактировать мероприятие.

Вы можете попробовать и обновить событие после его создания и добавить себя в качестве владельца и обновить пользователей, установив их как гость. Однако я не уверен, что это возможно установить кого-то в качестве гостя на мероприятие в их личном календаре.