2017-09-13 62 views
0

我试图设置的事件的开始日期存在问题。尽管如果我们定义了DTSTART,例如我们是9/13/17 11:05 am,那么事件显示日期为9/13/17上午11:30到下午12:30。重复参数是正确的。创建周期性日历事件 - 设置开始日期问题

我想在每个月的第一天在下午6点设置一个事件。例如:我们是9月13日。我想在10月1日开始,然后是1月的每个月。

我的代码有什么问题?

long startMillis = 0; 
    long endMillis = 0; 
    Calendar beginTime = Calendar.getInstance(); 
    beginTime.set(2017, 10, 1, 18, 00); 
    startMillis = beginTime.getTimeInMillis(); 
    Calendar endTime = Calendar.getInstance(); 
    endTime.set(2017, 10, 1, 18, 15); 
    endMillis = endTime.getTimeInMillis(); 

    Intent calIntent = new Intent(Intent.ACTION_INSERT); 
    calIntent.setType("vnd.android.cursor.item/event"); 
    calIntent.putExtra(CalendarContract.Events.TITLE, "Monthly Change"); 
    calIntent.putExtra(CalendarContract.Events.DESCRIPTION, "test"); 
    GregorianCalendar calDate = new GregorianCalendar(2014, 10, 1); 
    calIntent.putExtra(CalendarContract.Events.EVENT_TIMEZONE, timezone); 
    calIntent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false); 
    calIntent.putExtra(CalendarContract.Events.RRULE, "FREQ=MONTHLY"); 
    calIntent.putExtra(CalendarContract.Events.RDATE, startMillis); 
    calIntent.putExtra(CalendarContract.Events.DTSTART, startMillis); 
    calIntent.putExtra(CalendarContract.Events.DTEND, endMillis); 

    startActivity(calIntent); 

回答

0

我找到了解决方案通过定义开始时间和持续时间:

Uri eventsUri; 
    if (android.os.Build.VERSION.SDK_INT <= 7) { 
     eventsUri = Uri.parse("content://calendar/events"); 
    } else { 
     eventsUri = Uri.parse("content://com.android.calendar/events"); 
    } 
    Calendar cal = Calendar.getInstance(); 
    ContentValues event = new ContentValues(); 
    event.put("calendar_id", 1); 
    event.put("title", "Event Title"); 
    event.put("description", "Event Desc"); 
    event.put("eventLocation", "Event Location"); 
    cal.set(2017, 9, 1, 14, 0); 
    event.put("dtstart", cal.getTimeInMillis()); 
    event.put(CalendarContract.Reminders.DTSTART, cal.getTimeInMillis()); 
    event.put("rrule", "FREQ=MONTHLY"); 
    event.put("allDay", 0); // 0 for false, 1 for true 
    event.put("eventStatus", 1); 
    event.put("hasAlarm", 1); // 0 for false, 1 for true 
    event.put("duration","P900S"); 
    event.put("eventTimezone", TimeZone.getDefault().getID()); 
    Uri url = getActivity().getContentResolver().insert(eventsUri, event); 


    long eventID = parseLong(url.getLastPathSegment()); 
    String reminderUriString = "content://com.android.calendar/reminders"; 

    ContentValues reminderValues = new ContentValues(); 
    SettingsFragment sf = new SettingsFragment(); 
    String email = sf.getMainEmail(); 
    reminderValues.put("event_id", eventID); 
    reminderValues.put("minutes", 10); // Default value of the 
    // reminderValues.put("method", 1); // Alert Methods: Alert(1) Email(2) SMS(3) 
    reminderValues.put("method", 2); // Alert Methods: Alert(1) Email(2) SMS(3) 
    Uri reminderUri = getActivity().getApplicationContext().getContentResolver(). 
      insert(Uri.parse(reminderUriString), reminderValues); 
相关问题