我有一个Android应用程序与服务某些药物信息下载。
例如(白色FLUDEX 2轮24-02-2012),是指药物名为FLUDEX,白,圆,必须从今天起直到24-01-2012给予每日2次。
现在我想的药物信息下载后,用药物信息日历默默地/编程(无需用户交互)添加重复事件。 前10分钟,所以,从今天直到24-01-2012每10点和晚上10点有一个提醒把他的药。 我的应用程序会为Android 2-4。 我怎样才能做到这一点,我是从我到目前为止搜索混淆。
第二个问题:我如何只能删除从我的应用程序发出的事件(和他们的提醒),所以,当我同步我的药物治疗,以删除所有以前的事件并生成基于新的药物治疗,我从我的服务接收新的事件?
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
这里是一个很好的例子 ,你想要什么。
更新有关压延机的更多信息,并实施提醒或其他的东西, 看到这
您也可以从下面的代码获得帮助
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);
要建立多天束缚reoccuring事件的时间,我们需要使用CalendarContract.Events.RRULE 。 该规则是组合频率,计数等
比方说,我们需要创建一个事件的日常存在的在一天中的特定时间期10天:
Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
beginCalendarTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
endCalendarTime.getTimeInMillis())
.putExtra(CalendarContract.Events.TITLE, heading)
.putExtra(CalendarContract.Events.DESCRIPTION, "To be added")
.putExtra(CalendarContract.Events.EVENT_LOCATION, location)
.putExtra(CalendarContract.Events.RRULE, "FREQ=DAILY;COUNT=10");
文章来源: Create a repeating event with reminder until specific day without Intent in Android?