1

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;
}
4

2 に答える 2

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

于 2011-01-28T11:38:08.730 に答える
-2

GCalendar Widget を使用して、Google カレンダーのイベントを表示、作成、編集、および削除します。

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

于 2011-05-02T13:46:47.363 に答える