Search code examples
androidandroid-calendarandroid-datepicker

How do i programatically change the Current date and time of an event in android?


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

Solution

  • 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();