没有Android的意图创建一个提醒,直到某一天重复事件?(Create a repeating e

2019-08-03 09:02发布

我有一个Android应用程序与服务某些药物信息下载。

例如(白色FLUDEX 2轮24-02-2012),是指药物名为FLUDEX,白,圆,必须从今天起直到24-01-2012给予每日2次。

现在我想的药物信息下载后,用药物信息日历默默地/编程(无需用户交互)添加重复事件。 前10分钟,所以,从今天直到24-01-2012每10点和晚上10点有一个提醒把他的药。 我的应用程序会为Android 2-4。 我怎样才能做到这一点,我是从我到目前为止搜索混淆。

第二个问题:我如何只能删除从我的应用程序发出的事件(和他们的提醒),所以,当我同步我的药物治疗,以删除所有以前的事件并生成基于新的药物治疗,我从我的服务接收新的事件?

Answer 1:

        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



Answer 2:

这里是一个很好的例子 ,你想要什么。

更新有关压延机的更多信息,并实施提醒或其他的东西, 看到这

您也可以从下面的代码获得帮助

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


Answer 3:

要建立多天束缚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?