2012-11-30 6 views
7

Ich habe eine Android-App, die mit einem Dienst einige Drogen Info herunterlädt.Erstellen Sie eine wiederkehrende Veranstaltung mit Erinnerung bis zu einem bestimmten Tag ohne Absicht in Android?

Zum Beispiel (fludex weiß Runde 2 24-02-2012), bedeutet ein Medikament namens Fludex, weiß und rund, muss 2 mal pro Tag von heute bis 24-01-2012 gegeben werden.

Jetzt möchte ich nach dem Herunterladen von Drogen Informationen, um wiederholtes Ereignis mit Drogen Informationen in den Kalender still/programmatisch (ohne Benutzerinteraktion) hinzufügen. Also ab heute bis 24.01.2012 jeden 10.00 und 22.00 Uhr eine Erinnerung haben, 10 Minuten vorher, um seine Droge zu nehmen. Meine App wird für Android 2-4 sein. Wie kann ich das tun, ich bin verwirrt von meiner Suche so weit. 2. Frage: Wie kann ich nur die Ereignisse (und ihre Erinnerungen) löschen, die aus meiner Anwendung gemacht wurden, also wenn ich meine Medikamententherapie synchronisiere, um alle vorherigen Ereignisse zu löschen und neue Ereignisse basierend auf der neuen Arzneimitteltherapie zu erzeugen, empfange ich von meinem Bedienung?

+0

haben einen Blick auf dieses Problem: http://stackoverflow.com/questions/28871921/add-weekly-event-to-calendar – Sun

Antwort

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

, wo dtuntil ist

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

Ref: Recurrence Rule

+0

+1 für detaillierte Antwort –

+0

Was ist Ctx hier? – Manikandan

+0

Müssen wir irgendwelche Manifeste geben? – Manikandan

2

Hier ist eine gute Example von was Sie wollen.

aktualisieren für weitere Informationen über Plan und Umsetzung Mahnungen oder andere Sachen see this

Sie können auch Hilfe aus dem folgenden Code

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

Das schafft/eine Erinnerung/Alarm an einem bestimmten date.But Ich möchte diese Wiederholung für N Tage von jetzt machen. Und ich möchte auch Ereignisse in den Kalender einfügen, so dass der Benutzer sie in sehen kann. – oikonomopo

+0

können wir Dauer mit putExtra setzen ie intent.putExtra ("Dauer", benutzerdefinierte Zeit); – Ali

Verwandte Themen