覆盖提醒的Google日历默认设置

Tam*_*arG 8 android reminders android-calendar

在我的应用中,用户可以将特殊事件添加到他们的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); 
Run Code Online (Sandbox Code Playgroud)

编辑:似乎只有在事件与Google的服务同步后才会添加提醒,几分钟后,而不是立即.我该怎样预防呢?

Mis*_*rdi 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>
Run Code Online (Sandbox Code Playgroud)

因此,当提醒添加到事件中时,这将被触发。您可以将插入的事件 ID 保存在中SharedPreferences,然后删除提醒onReceive()

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