Как удалить свой собственный испорченный календарь программным способом?

Я работаю над приложением, которое, помимо прочего, позволяет пользователю создавать напоминания и сохранять их в своем календаре.

Текущий код сначала создает локальный календарь, а затем вставляет в него события по запросу, незаметно (без открытия приложения календаря).

Проблема заключается в том, что при создании календаря на некоторых устройствах добавляются следующие поля (на Samsung), а на других устройствах он не может добавлять их напрямую:

contentValues.put(CalendarContract.Calendars.ACCOUNT_NAME, ApplicationState.getCurrentUser().getFullName());
contentValues.put(CalendarContract.Calendars.ACCOUNT_TYPE, "LOCAL");
contentValues.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
contentValues.put(CalendarContract.Calendars.OWNER_ACCOUNT, ApplicationState.getCurrentUser().getEmail());

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

Результат описанного выше: на большинстве устройств, отличных от Samsung, был создан поврежденный календарь без обязательных полей, таких как ACCOUNT_NAME.

Это означает, что родное приложение Google Calendar все время падает и не может быть открыто, даже если я удалю свое приложение (так как поврежденный календарь уже был создан).

Кроме того, похоже, что я не могу удалить этот поврежденный календарь, так как у меня нет этих необходимых полей...

Что я могу сделать, чтобы это исправить?

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

Спасибо!

0 ответов

Попробуйте использовать это приложение, чтобы удалить неисправный календарь

iCal Импорт / Экспорт CalDAV

Откройте приложение и сделайте следующее:

  1. Выберите Редактировать календари.

  2. Выберите свой неисправный календарь в поле Тип: Местный.

  3. Выберите вариант удаления календаря, и все готово

Надеюсь, это поможет с вашей проблемой.