2017-02-15 6 views
0

In meiner App muss ich ein paar Ereignisse pro Tag, wiederkehrend erstellen. Beispielsweise. Benutzer bietet drei Stunden: 11:30, 12:45, 15:15 und Enddatum z. 20-02-2017. Also muss ich drei Events pro Tag haben, die sich täglich bis zum 20-02-2017 wiederholen. Mein Code ist unten, fügt jedoch nur das letzte Ereignis hinzu (15:15).Android Kalender wiederkehrendes Ereignis mehrmals pro Tag

// 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); 
} 

Aus meiner Sicht ist es egal, ob es drei Ereignisse werden (eine pro Zeitangabe) oder man sie alle zu sammeln.

Bis jetzt nur Pop-up für das letzte Mal angezeigt wird und ein Ereignis erstellt.

Antwort

0

Hinzufügen onActivityResult Handler geholfen, aber ich weiß nicht warum.

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