我有一个安卓应用程序,下载一些药物信息的服务。
例如(fludex白色轮次2 24-02-2012),意味着一种名为fludex的药物,白色和圆形,从今天起至2012年1月24日,每天必须给药2次。
现在我想在药物信息下载后,以静默/编程的方式将带有药物信息的重复事件添加到日历中(无需用户交互)。所以从今天到2012年1月24日,每上午10点和晚上10点都要提前10分钟提醒服用他的药物。我的应用程序将适用于android 2-4。我怎么才能做到这一点呢?到目前为止,我的搜索结果让我感到困惑。
第二个问题:如何仅删除从我的应用程序中创建的事件(及其提醒),因此当我同步我的药物治疗以删除所有以前的事件并根据我从我的服务中获得的新药物治疗生成新事件时?
发布于 2012-12-14 22:49:39
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);发布于 2012-12-01 04:04:44
这是你想要的一个很好的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);发布于 2019-01-04 16:14:04
要在多天内创建有时间限制的重现事件,我们需要使用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");https://stackoverflow.com/questions/13652168
复制相似问题