2017-02-15 15 views
0

В моем приложении мне нужно создать несколько событий в день, повторяющихся. Например. Пользователь предоставляет три часа: 11:30, 12:45, 15:15 и дату окончания, например. 20-02-2017. Поэтому мне нужно иметь три события в день, повторяя ежедневно до 20-02-2017. Мой код ниже, однако он добавляет только последнее событие (15:15).Повторное событие для Android календаря несколько раз в день

// boxes cotnains edit fields with hours 
for (int i = 0; i < boxes.size(); i++) { 
    EditText e = boxes.get(i); 
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
    Calendar xd = Calendar.getInstance(); 
    xd.setTime(sdf.parse(e.getText().toString()));// all done 
    cal.set(Calendar.HOUR_OF_DAY, xd.get(Calendar.HOUR_OF_DAY)); 
    cal.set(Calendar.MINUTE, xd.get(Calendar.MINUTE)); 
    eventValues.put("calendar_id", 1); 
    eventValues.put("title", "Pomiar ciśnienia"); 
    eventValues.put("description", "Pamiętaj aby dokonać pomiaru"); 
    Calendar beginTime = Calendar.getInstance(); 
    beginTime.set(Calendar.HOUR_OF_DAY, xd.get(Calendar.HOUR_OF_DAY)); 
    beginTime.set(Calendar.MINUTE, xd.get(Calendar.MINUTE)); 
    beginTime.add(Calendar.DATE, 0); 
    SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy"); 
    Date end = sdf2.parse(etUntil.getText().toString()); 
    Calendar dt = Calendar.getInstance(); 

    dt.setTime(end); 

    SimpleDateFormat yyyymmdd = new SimpleDateFormat("yyyyMMdd"); 
    String dtUntil = yyyymmdd.format(dt.getTime()); 

    long startMillis = beginTime.getTimeInMillis(); 
    Intent intent = new Intent(Intent.ACTION_EDIT); 
    intent.setData(CalendarContract.Events.CONTENT_URI); 
    intent.setType("vnd.android.cursor.item/event"); 
    intent.putExtra("rrule", "FREQ=DAILY;UNTIL="+dtUntil); 
    intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startMillis); 
    intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, startMillis + 1000*60*30); 
    intent.putExtra("title", "Zmierz ciśnienie!"); 
    intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false); 
    intent.putExtra(CalendarContract.Events.HAS_ALARM, 1); 

    startActivity(intent); 
} 

С моей точки зрения это не имеет значения, если будет три события (по одному на определенное время) или один сбор всех из них.

Пока отображается только всплывающее окно для последнего времени и создается событие.

ответ

0

Добавление onActivityResult обработчик помог, однако я не знаю почему.

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     Toast.makeText(this, "Added", Toast.LENGTH_SHORT).show(); 
    }