I'm trying to add an event programmatically to my calendar in Android and I'm picking a date, start date , end date,time as well.
I'm trying to send it to the Calendar,but for some reason it takes the current date only,no matter what I send.
I understand that we need to send only in milliseconds, but how am I supposed to set an event for a later date ?
This is my code
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
edittext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new DatePickerDialog(DetailsActivity.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
readCalendar();
}
});
}
private void readCalendar() {
Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setData(CalendarContract.Events.CONTENT_URI);
Calendar cal = Calendar.getInstance();
edittext.setSelected(true);
long startTime = cal.getTimeInMillis()+24*60*60*1000;
long endTime = startTime+ 60 * 30 * 1000;
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startTime);
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime);
intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false);
intent.putExtra(CalendarContract.Events.TITLE, "DOCTOR APPOINTMENT");
startActivity(intent);
}
private void updateLabel() {
String myFormat = "MM/dd/yy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
edittext.setText(sdf.format(myCalendar.getTime()));
}
You want to set the calender event based on the date selected by user, hence you need to user the myCalender
instance to fetch the startTime
.
long startTime = myCalendar.getTime()+24*60*60*1000;
long endTime = startTime+ 60 * 30 * 1000;
Below line create a calender instance of the curent date time. Hence remove it.
Calendar cal = Calendar.getInstance();