Android Calendar Intent事件总是在开始后一小时结束 [英] Android Calendar Intent event end always one hour after start

查看:99
本文介绍了Android Calendar Intent事件总是在开始后一小时结束的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经研究了很多这个问题,而且似乎找不到遇到同样困难的人.开始时间运行良好,但结束时间始终设置为距事件初始开始时间仅一小时.

I've looked into this problem a lot and I can't seem to find anyone having the same difficulties. The start time is working fine but the end time is always set to being exactly one hour after the initial start time of the event.

            Calendar calStart = Calendar.getInstance();
                  calStart.set(2014, 02, 04, 13, 20, 0);

    Calendar calEnd = Calendar.getInstance();
                  calEnd.set(2014, 02, 04, 15, 30, 0);

    Intent intent = new Intent(Intent.ACTION_INSERT)
    .setData(Events.CONTENT_URI)
     .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, calStart.getTimeInMillis())     
    .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, calEnd.getTimeInMillis())
    .putExtra(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID())
    .putExtra(Events.TITLE, "TEST")
    .putExtra(Events.EVENT_LOCATION, "Location")
    .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);

     startActivity(intent);

推荐答案

我使用其他实现对其进行了修复.

I fixed it my using a different implementation.

 public void setAlarm(Date examMonth, int day, int hourOfDay, int minute,
        double length, String examName, String venue) {


    Calendar calSet = Calendar.getInstance();
    calSet.setTime(examMonth);
    int month = calSet.get(Calendar.MONTH);
    int year = Calendar.getInstance().get(Calendar.YEAR);
    calSet.set(year, month, day, hourOfDay, minute, 0); 



     // look for calendar
    Cursor cursor = getContentResolver()
            .query(Uri.parse("content://com.android.calendar/calendars"),
                    new String[] { "_id", "calendar_displayName" },"visible='1'"
                    , null, null);
    cursor.moveToFirst();
    String[] CalNames = new String[cursor.getCount()];
    int[] CalIds = new int[cursor.getCount()];
    for (int i = 0; i < CalNames.length; i++) {
        CalIds[i] = cursor.getInt(0);
        CalNames[i] = cursor.getString(1);
        cursor.moveToNext();
    }

    cursor.close();


    // put calendar event
    ContentValues event = new ContentValues();
    event.put("calendar_id", CalIds[0]);
    event.put("title", examName);
    //event.put("description", description);
    event.put("eventLocation", venue);
    event.put(Events.ALL_DAY, 0);
    event.put("dtstart",  calSet.getTimeInMillis());
    event.put("dtend", (float)(length*3600000)+calSet.getTimeInMillis());
    event.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
    event.put(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
    event.put("hasAlarm", 1);

    Uri eventsUri = Uri.parse("content://com.android.calendar/events");
    Uri newEvent = getContentResolver().insert(eventsUri, event);

    // put alarm reminder for an event, 2 hours prior
    long eventID = Long.parseLong(newEvent.getLastPathSegment());

    ContentValues cv_alarm = new ContentValues();
    cv_alarm.put("event_id", eventID);
    cv_alarm.put("method", 1);
    cv_alarm.put("minutes", 120);
    this.getContentResolver()
            .insert(Uri.parse("content://com.android.calendar/reminders"),
                    cv_alarm);
}

这篇关于Android Calendar Intent事件总是在开始后一小时结束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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