2016-08-01 9 views
8

, उपयोगकर्ताओं को अपने गूगल कैलेंडर के लिए विशेष घटनाओं जोड़ सकते हैं। मैं चाहता हूं कि घटनाओं को बिना किसी अलार्म/अनुस्मारक/अधिसूचना के जोड़ा जाएगा। कुछ उपयोगकर्ताओं के कैलेंडर में अनुस्मारक के लिए डिफ़ॉल्ट सेटिंग्स होती हैं, "घटना से एक दिन पहले, 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); 

संपादित करें: ऐसा लगता है कि अनुस्मारक केवल कुछ मिनट बाद, Google की सेवाओं के साथ सिंक्रनाइज़ किए जाने के बाद ही जोड़े गए थे। मैं यह कैसे रोक सकता हूँ?

+0

आप एक घटना को जोड़ने के बाद सभी घटना अनुस्मारक को हटाने की कोशिश की? –

+0

नहीं। मैं कोशिश करूँगा और अपडेट करूँगा। – TamarG

+0

मैं अनुस्मारक कैसे हटा सकता हूं? – TamarG

उत्तर

2

आप CalendarProvider पर BroadCastReceiver सेट कर सकते हैं। प्रदाता में कोई भी परिवर्तन होने पर इसे निकाल दिया जाएगा:

<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)}); 
संबंधित मुद्दे