2012-11-30 14 views
7

Ho un'app per Android che scarica con un servizio alcune informazioni sui farmaci.Creare un evento ricorrente con promemoria fino a un giorno specifico senza Intento in Android?

Ad esempio (fludex white round 2 24-02-2012), indica un farmaco denominato fludex, bianco e rotondo, deve essere somministrato 2 volte al giorno da oggi fino al 24-01-2012.

Ora voglio scaricare informazioni sulla droga, per aggiungere eventi ripetuti con informazioni sui farmaci al calendario in modo silenzioso/programmatico (senza interazione dell'utente). Così da oggi fino al 24-01-2012 ogni 10 e 22 per avere un promemoria 10 minuti prima di prendere il suo farmaco. La mia app sarà per Android 2-4. Come posso farlo, sono confuso dalla mia ricerca finora.

Seconda domanda: Come posso cancellare solo gli eventi (ei loro promemoria) creati dalla mia applicazione, così quando sincronizzo la mia terapia farmacologica per cancellare tutti gli eventi precedenti e produrre nuovi eventi basati sulla nuova terapia farmacologica che ricevo dal mio servizio?

+0

un'occhiata a questo problema: http://stackoverflow.com/questions/28871921/add-weekly-event-to-calendar – Sun

risposta

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

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

Rif: Recurrence Rule

+0

+1 per la risposta dettagliata –

+0

cos'è ctx qui? – Manikandan

+0

Abbiamo bisogno di dare qualche permesso in manifest? – Manikandan

2

Ecco un buon Example di quello che vuoi.

Aggiornamento per ulteriori informazioni su calendario e promemoria di attuazione o di altra roba see this

È anche possibile ottenere aiuto dal seguente codice

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

Questo crea/impostare un promemoria/allarmi su un determinato date.But Voglio fare questa ripetizione per N giorni da adesso. E voglio anche inserire eventi nel calendario, in modo che l'utente possa vederli. – oikonomopo

+0

possiamo mettere la durata usando putExtra ie intent.putExtra ("duration", ora personalizzata); – Ali