2016-08-01 8 views
8

В моем приложении пользователи могут добавлять специальные события в свой Календарь Google. Я хочу, чтобы события были добавлены без предупреждения/напоминания/уведомления. Некоторые календари пользователей имеют настройки по умолчанию для напоминаний, как «За день до события, в 9:00».Отменить настройки Календаря Google для напоминаний

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

ContentValues eventValues = new ContentValues(); 
    eventValues.put("calendar_id", calendarId); 
    eventValues.put("title",title); 
    eventValues.put("allDay", 1); 
    eventValues.put("dtstart", dtstart); 
    eventValues.put("dtend", dtend); 
    eventValues.put("hasAlarm", 1); // I tried both 0 and 1, none of them solved the problem! 
    eventValues.put("hasAttendeeData", 1); 
    eventValues.put("availability",1); 

Edit: Кажется, что напоминания были добавлены только после того, как события были синхронизированы с сервисами Google, через несколько минут после того, как, не сразу. Как я могу это предотвратить?

+0

Вы пытались удалить все напоминания о событиях после добавления события? –

+0

Нет. Я попробую и обновится здесь. – TamarG

+0

Как удалить напоминания? – TamarG

ответ

2

Вы можете установить BroadCastReceiver на CalendarProvider. Он будет запущен, если в провайдере произойдут какие-либо изменения:

<receiver android:name="CalendarChangeReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.PROVIDER_CHANGED" /> 
    <data android:scheme="content" /> 
    <data android:host="com.android.calendar" /> 
</intent-filter> </receiver> 

Поэтому, когда напоминания добавляются к событиям, это будет срабатывать. Вы можете сохранить ваши вставленные события идентификаторов в SharedPreferences, а затем удалить напоминания в onReceive():

context.getContentResolver().delete(CalendarContract.Reminders.CONTENT_URI, CalendarContract.Reminders.EVENT_ID + "=?", new String[]{Long.toString(eventId)});