在 Android 中创建一个没有 Intent 的重复事件并提醒直到特定日期?

2024-01-11

我有一个 Android 应用程序,可以通过服务下载一些药物信息。

例如(fludex white round 2 24-02-2012),表示一种名为fludex,白色圆形的药物,从今天到2012年1月24日必须每天服用2次。

现在我想在下载药物信息后,以静默/编程方式(无需用户交互)将带有药物信息的重复事件添加到日历中。 因此,从今天到 2012 年 1 月 24 日,每天上午 10 点和晚上 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);

Ref: Recurrence Rule https://www.rfc-editor.org/rfc/rfc5545#section-3.8.5.3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 中创建一个没有 Intent 的重复事件并提醒直到特定日期? 的相关文章

随机推荐