Я обнаружил, что Events.CONTENT_EXCEPTION_URI
(здесь ) используется для создания повторяющегося события. Трудно найти документ или пример кода в Интернете. Поэтому я пробую много способов
1 Вставить как SyncAdapter
ContentValues values = new ContentValues();
values.put(Events.ORIGINAL_INSTANCE_TIME, CaldavGlobalVar.getCurrentTime_());
values.put(Events.SELF_ATTENDEE_STATUS, status);
if(!username.equals("")){
values.put(Events.ORGANIZER, username);
}
if(event.getSummarry()!=null){
values.put(Events.TITLE, event.getSummarry());
}
if(event.getDescription()!=null){
values.put(Events.DESCRIPTION, event.getDescription());
}
if(event.getDateStart()!=null){
values.put(Events.DTSTART, CaldavGlobalVar.convertTIMEtomilisecond(event.getDateStart(), event.getAllDay()));
}
Uri exceptionUri = Uri. withAppendedPath(Events.CONTENT_EXCEPTION_URI, String.valueOf(event.getEventId()));
Uri syncUri = CalendarProvider.asSyncAdapter(exceptionUri, username,context.getResources().getString(R.string.ACCOUNT_TYPE));
Uri resultUri = context.getContentResolver().insert(syncUri, values);
resultUri return null, я не видел никаких исключений или каких-либо взаимосвязей, поэтому я копаю исходный код Android (из здесь) и узнаю, как они используют Events.CONTENT_EXCEPTION_URI
Итак, я меняю
2 Вставьте с помощью «ContentProviderOperation», например this в строке 1003
ContentValues values = new ContentValues();
values.put(Events.ORIGINAL_INSTANCE_TIME, CaldavGlobalVar.getCurrentTime_());
values.put(Events.SELF_ATTENDEE_STATUS, 1);
values.put(Events.STATUS, Events.STATUS_CONFIRMED);
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
Uri exceptionUri = Uri.withAppendedPath(Events.CONTENT_EXCEPTION_URI,
String.valueOf(eventId));
ops.add(ContentProviderOperation.newInsert(exceptionUri).withValues(values).build());
mHandler.startBatch(mHandler.getNextToken(), null, CalendarContract.AUTHORITY, ops, 1000);
Но он показывает журнал, что он установлен неудачно, я так беспокоюсь об этом, может быть, Google не поддерживает его полностью, я также перечисляю всех поставщиков контента в Android, у меня нет исключений uri (Events.CONTENT_EXCEPTION_URI
) - content://com.android.calendar/exception
Исключение выброшено
java.lang.IllegalArgumentException: Unknown URL content://com.android.calendar/exception
Есть у кого-нибудь опыт? Любая помощь приветствуется :)
С уважением
1 ответ
Небольшая часть моего кода:
ContentValues args = new ContentValues();
args.put(CalendarContract.Events.ORIGINAL_INSTANCE_TIME, originalinstancetime);
args.put(CalendarContract.Events.STATUS, status);
Uri.Builder eventUriBuilder = CalendarContract.Events.CONTENT_EXCEPTION_URI.buildUpon();
ContentUris.appendId(eventUriBuilder, originalEventID);
try {
final Uri resultUri = context.getContentResolver().insert(eventUriBuilder.build(), args);
int eventID = Integer.parseInt(resultUri.getLastPathSegment());
} catch (Exception e) {
}
CalendarContract.Events.ORIGINAL_INSTANCE_TIME
, вы сообщаете Calendar Provider
, для какого конкретного экземпляра вы хотите изменить статус. CalendarContract.Events.CONTENT_EXCEPTION_URI
- это специальный Uri
, который необходимо использовать для этой цели.
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.