2016-08-01 21 views
8

Uygulamamda, kullanıcılar Google Takvim’ine özel etkinlikler ekleyebilir. Olayların herhangi bir alarm/hatırlatma/bildirim olmaksızın eklenmesini istiyorum. Kullanıcı takvimlerinden bazıları, "Etkinlikten bir gün önce, saat 9: 00'da" hatırlatıcılar için varsayılan ayarlara sahiptir. herhangi bir alarm olmaz böyleceHatırlatıcılar için Google Takvim varsayılan ayarlarını geçersiz kılma

nasıl varsayılan ayarlarına rağmen hiç etkinlik ekleyebilir ?

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); 

Düzenleme: olaylar Google'ın hizmetlerinden ile senkronize edildi sonra hatırlatmalar birkaç dakika sonra, hemen değil, eklendi görünüyor. Bunu nasıl önleyebilirim?

+0

Bir etkinlik ekledikten sonra tüm olay hatırlatmaları silme denediniz mi? –

+0

Hayır. Burada deneyip güncelleyeceğim. – TamarG

+0

Hatırlatıcıları nasıl silebilirim? – TamarG

cevap

2

CalendarProvider'da BroadCastReceiver'u ayarlayabilirsiniz. hatırlatmalar olaylara eklendiğinde

<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> 

Yani, bu ateş edecek: Herhangi bir değişikliğin sağlayıcıya gerçekleştiğinde O ateş edecek. Eğer takılı olaylar SharedPreferences yılında kimlikleri kaydedebilir ve daha sonra onReceive() hatırlatıcı silebilirsiniz:

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