在没有Android的意图创建具有提醒,直到某一天重复事件? [英] Create a repeating event with reminder until specific day without Intent in Android?

查看:1066
本文介绍了在没有Android的意图创建具有提醒,直到某一天重复事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

例如(fludex白色圆形2 24-02-2012),是指一个名为fludex,白色和圆形的药物,必须从今天给予每日2次,直到24-01-2012。

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

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


解决方案

  ContentResolver的CR = ctx.getContentResolver();
        ContentValues​​值=新ContentValues​​();        values​​.put(CalendarContract.Events.DTSTART,DTSTART);
        values​​.put(CalendarContract.Events.TITLE,职称);
        values​​.put(CalendarContract.Events.DESCRIPTION,评论);        时区的timeZone = TimeZone.getDefault();
        values​​.put(CalendarContract.Events.EVENT_TIMEZONE,timeZone.getID());        //默认日历
        values​​.put(CalendarContract.Events.CALENDAR_ID,1);        values​​.put(CalendarContract.Events.RRULE,FREQ = DAILY直至=
                + dtUntill);
        //一小时
        values​​.put(CalendarContract.Events.DURATION,+ P1H);        values​​.put(CalendarContract.Events.HAS_ALARM,1);        //插入事件日历
        URI URI = cr.insert(CalendarContract.Events.CONTENT_URI,价值观);

其中dtuntil为

  SimpleDateFormat的年月日=新的SimpleDateFormat(年月日);
    日历DT = Calendar.getInstance();    //其中untilDate是您选择的日期实例,例如30/01/2012
    dt.setTime(untilDate);    //如果你想要的事件,直至30/01/2012我们增加一天内,从我们的一天,因为直到RRULE设定的最后一天之前,要对事件事件
    dt.add(Calendar.DATE,1);
    串dtUntill = yyyymmdd.format(dt.getTime());    //乌里
    URI URI = cr.insert(CalendarContract.Events.CONTENT_URI,价值观);    //取得事件ID即在开放的最后一个元素
    长事件ID =的Long.parseLong(uri.getLastPathSegment());    //加10分钟提示事件
    ContentValues​​提醒=新ContentValues​​();
    reminders.put(Reminders.EVENT_ID,事件ID);
    reminders.put(Reminders.METHOD,Reminders.METHOD_ALERT);
    reminders.put(Reminders.MINUTES,10);    URI URI = cr.insert(Reminders.CONTENT_URI,提醒);

另请参阅重复规则

I have an android app that downloads with a service some drugs info.

For example (fludex white round 2 24-02-2012),means a drug named fludex ,white and round,must be given 2 times per day from today untill 24-01-2012.

Now i want after drug info downloading , to add repeated event with drug info to the calendar silently/programmatically(without user interaction). So that from today untill 24-01-2012 every 10 am and 10pm to have a reminder 10 minutes before to take his drug. My app will be for android 2-4. How can i do that,i'm confused from my searching so far.

Second question:How can i delete only the events(and their reminders) made from my application,so when i sync my drug therapy to delete all previous events and produce new events based on the new drug therapy i receive from my service?

解决方案

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

where dtuntil is

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

See also Recurrence Rule

这篇关于在没有Android的意图创建具有提醒,直到某一天重复事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆