2012-11-30 31 views
7

मेरे पास एक एंड्रॉइड ऐप है जो कुछ दवाओं की जानकारी के साथ डाउनलोड करता है।एंड्रॉइड में इरादे के बिना विशिष्ट दिन तक अनुस्मारक के साथ एक दोहराव घटना बनाएँ?

उदाहरण के लिए (फ्लूडेक्स व्हाइट राउंड 2 24-02-2012), जिसका मतलब है फ्लडक्स, सफेद और दौर नाम की एक दवा, 24-01-2012 तक आज से 2 बार प्रति दिन दी जानी चाहिए।

अब मैं दवा की जानकारी डाउनलोड करने के बाद, कैलेंडर को चुपचाप/प्रोग्रामेटिक रूप से (उपयोगकर्ता इंटरैक्शन के बिना) में बार-बार ईवेंट जोड़ने के लिए चाहता हूं। ताकि आज से 10-01-2012 तक प्रत्येक 10 बजे से 10 बजे तक उसकी दवा लेने के लिए 10 मिनट पहले अनुस्मारक हो। मेरा ऐप एंड्रॉइड 2-4 के लिए होगा। मैं यह कैसे कर सकता हूं, मैं अब तक अपनी खोज से उलझन में हूं।

दूसरा प्रश्न: मैं अपने आवेदन से किए गए केवल ईवेंट (और उनकी अनुस्मारक) को कैसे हटा सकता हूं, इसलिए जब मैं अपनी पिछली घटनाओं को हटाने के लिए अपनी दवा चिकित्सा को सिंक करता हूं और नई दवाओं के उपचार के आधार पर नई घटनाओं का उत्पादन करता हूं तो मुझे सर्विस?

+0

इस मुद्दे पर एक नजर है: http://stackoverflow.com/questions/28871921/add-weekly-event-to-calendar – Sun

उत्तर

14
 ContentResolver cr = ctx.getContentResolver(); 
     ContentValues values = new ContentValues(); 

     values.put(CalendarContract.Events.DTSTART, dtstart); 
     values.put(CalendarContract.Events.TITLE, title); 
     values.put(CalendarContract.Events.DESCRIPTION, comment); 

     TimeZone timeZone = TimeZone.getDefault(); 
     values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID()); 

     // default calendar 
     values.put(CalendarContract.Events.CALENDAR_ID, 1); 

     values.put(CalendarContract.Events.RRULE, "FREQ=DAILY;UNTIL=" 
       + dtUntill); 
     //for one hour 
     values.put(CalendarContract.Events.DURATION, "+P1H"); 

     values.put(CalendarContract.Events.HAS_ALARM, 1); 

     // insert event to calendar 
     Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 

जहां dtuntil

SimpleDateFormat yyyymmdd = new SimpleDateFormat("yyyymmdd"); 
    Calendar dt = Calendar.getInstance(); 

    //where untilDate is a date instance of your choice,for example 30/01/2012 
    dt.setTime(untilDate); 

    //if you want the event until 30/01/2012 we add one day from our day because UNTIL in RRule sets events Before the last day want for event 
    dt.add(Calendar.DATE, 1); 
    String dtUntill = yyyymmdd.format(dt.getTime()); 

    // Uri 
    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 

    // get the event ID that is the last element in the Uri 
    long eventID = Long.parseLong(uri.getLastPathSegment()); 

    // add 10 minute reminder for the event 
    ContentValues reminders = new ContentValues(); 
    reminders.put(Reminders.EVENT_ID, eventID); 
    reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT); 
    reminders.put(Reminders.MINUTES, 10); 

    Uri uri = cr.insert(Reminders.CONTENT_URI, reminders); 
है से मदद मिल सकती है

रेफरी: Recurrence Rule

+0

+1 –

+0

यहां सीटीएक्स क्या है? – Manikandan

+0

क्या हमें मेनिफेस्ट में कोई अनुमति देने की ज़रूरत है? – Manikandan

2

यहां आप जो चाहते हैं उसका एक अच्छा Example है।

अद्यतन कैलेंडर और लागू करने के लिए अनुस्मारक या अन्य सामग्री के बारे में अधिक जानकारी के लिए see this

आप निम्न कोड

Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setType("vnd.android.cursor.item/event"); 
intent.putExtra("beginTime", date); 
intent.putExtra("allDay", true); 
intent.putExtra("rrule", "FREQ=YEARLY"); //To set the repeat rule 
intent.putExtra("endTime", date); 
intent.putExtra("title", summary); 
+0

यह बनाता है/एक निश्चित date.But पर एक चेतावनी/अलार्म सेट मैं अब से एन दिनों के लिए यह दोहराना चाहता हूं। और मैं भी कैलेंडर में घटनाओं को सम्मिलित करना चाहता हूं, ताकि उपयोगकर्ता उन्हें देख सकें। – oikonomopo

+0

क्या हम putExtra यानी intent.putExtra ("अवधि", कस्टम समय का उपयोग करके अवधि डाल सकते हैं); विस्तृत उत्तर के लिए – Ali