在我的应用中,用户可以在Google日历中添加特殊事件。我希望在没有任何警报/提醒/通知的情况下添加事件。一些用户'日历具有提醒的默认设置,如"活动前一天,9:00"。
如何添加事件,以便尽管有默认设置,它们根本不会有任何警报?
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);
编辑:似乎只有在事件与Google的服务同步之后才会添加提醒,几分钟之后,而不是立即。我该如何预防?
答案 0 :(得分: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
中保存插入的事件ID,然后在onReceive()
中删除提醒:
context.getContentResolver().delete(CalendarContract.Reminders.CONTENT_URI, CalendarContract.Reminders.EVENT_ID + "=?", new String[]{Long.toString(eventId)});