Google日历条目警报无法使用Android

时间:2011-01-04 10:58:50

标签: android google-calendar-api alarm

我需要通过Android应用在谷歌日历中设置闹钟。我已经成功输入了日历中的数据,即使它已经设置了警报,但是当我查看日历条目的详细信息时,它会自动删除警报设置。

请注意,下面是代码段。

private Uri MakeNewCalendarEntry(int calId, String title, String desc,
        String location, String matchDate) {
    ContentValues event = new ContentValues();

    String value = matchDate;
    String[] splitedTimeDate = value.split("T");

    String dateValue = splitedTimeDate[0];
    String[] timeValue = splitedTimeDate[1].split("-");

    matchDate = dateValue + " " + timeValue[0];

    event.put("calendar_id", calId);
    event.put("title", title);
    event.put("description", desc);
    event.put("eventLocation", location);

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    java.util.Date d = null;
    try {
        d = formatter.parse(matchDate);// catch exception
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // This is the UTC Event Start Date
    Calendar calUTCEventDate = Calendar.getInstance();
    calUTCEventDate.setTime(d); // rest is the same....

    // This is the current UTC Date
    Calendar calCurrentUTCDate = Calendar.getInstance();

    TimeZone z = calCurrentUTCDate.getTimeZone();
    int offset = z.getRawOffset();
    int offsetHrs = offset / 1000 / 60 / 60;
    int offsetMins = offset / 1000 / 60 % 60;

    calCurrentUTCDate.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
    calCurrentUTCDate.add(Calendar.MINUTE, (-offsetMins));

    // This is the current Device Date
    Calendar calCurrentDeviceDate = Calendar.getInstance();

    long diff = calUTCEventDate.getTimeInMillis()
            - calCurrentUTCDate.getTimeInMillis();
    long minutes = Math.abs(diff) / (1000 * 60);
    long hours = minutes / 60;

    long startTime = System.currentTimeMillis() + 1000 * 60 * 60 * hours;
    long endTime = System.currentTimeMillis() + 1000 * 60 * 60
            * (hours + 8);

    event.put("dtstart", startTime);
    event.put("dtend", endTime);

    event.put("allDay", 0); // 0 for false, 1 for true
    event.put("eventStatus", 1);
    event.put("visibility", 1);
    event.put("transparency", 0);
    event.put("hasAlarm", 1); // 0 for false, 1 for true


    Uri eventsUri = Uri.parse(getCalendarUriBase() + "events");

    Uri insertedUri = getContentResolver().insert(eventsUri, event);
    return insertedUri;
}

2 个答案:

答案 0 :(得分:3)

以下片段帮我解决了问题......

  

Blockquote //上面的代码片段返回我的事件ID

            Uri newEvent = MakeNewCalendarEntry(iTestCalendarID, title,
                    desc, location, matchDate);
            int eventID = Integer.parseInt(newEvent.getLastPathSegment());
  

块引用

            final ContentResolver cr = getContentResolver();
            ContentValues values = new ContentValues();
            values.put("event_id", eventID);
            values.put("method", 1);
            values.put("minutes", 5);
            cr.insert(Uri.parse("content://com.android.calendar/reminders"), values); // for android 2.2+

          // OR 

            cr.insert(Uri.parse("content://calendar/reminders"), values); // for android 2.1 n earlier

感谢

-y

答案 1 :(得分:-2)

我使用GCalendar Widget查看,创建,编辑和删除Google日历活动。

http://bstdownload.com/reviews/gcalendar-widget-1/