2017-09-13 183 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); 
相關問題