Search code examples
androidcalendar

How add mutiple events to calendar without intent Android 8 or >?


I have already found questions about this but for my case nothing is happening. Event added through Calendar Provider is not showing up on the Android Calendar App I try to follow this but obviously I missed something since it doesn't work

I want to add several events in the calendar. I'm already trying with 1 but nothing happens

I am currently under android 10

    public void addEventToCalendar(){

        long calID = 3;
        long startMillis = 0;
        long endMillis = 0;
        Calendar beginTime = Calendar.getInstance();
        beginTime.set(2021, 10, 22, 15, 30);
        startMillis = beginTime.getTimeInMillis();
        Calendar endTime = Calendar.getInstance();
        endTime.set(2021, 10, 22, 16, 45);
        endMillis = endTime.getTimeInMillis();

        ContentResolver cr = getActivity().getContentResolver();
        ContentValues values = new ContentValues();
        values.put(CalendarContract.Events.DTSTART, startMillis);
        values.put(CalendarContract.Events.DTEND, endMillis);
        values.put(CalendarContract.Events.TITLE, "Hackathon");
        values.put(CalendarContract.Events.DESCRIPTION, "do some code");
        values.put(CalendarContract.Events.CALENDAR_ID, calID);
        values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
        Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
        
        long eventID = Long.parseLong(uri.getLastPathSegment());
    }

Solution

  • I just put it on a class, I'm using a CSV file where I just add my differents events, it's working for me on differents devices android and tested on Oreo, Pie and Android 10

        public class EventCalendar {
    String startEvent;
    String endEvent;
    String title;
    String description;
    
    public String getStartEvent() {
        return startEvent;
    }
    
    public void setStartEvent(String startEvent) {
        this.startEvent = startEvent;
    }
    
    public String getEndEvent() {
        return endEvent;
    }
    
    public void setEndEvent(String endEvent) {
        this.endEvent = endEvent;
    }
    
    public String getTitle() {
        return title;
    }
    
    public void setTitle(String title) {
        this.title = title;
    }
    
    public String getDescription() {
        return description;
    }
    
    public void setDescription(String description) {
        this.description = description;
    }
        public void addEventCalendar(Context myContext, InputStream is) {
        List<EventCalendar> mesEvent = new ArrayList<>();
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(is, StandardCharsets.UTF_8));
        String line;
        try {
            reader.readLine();
    
            while ((line = reader.readLine()) != null) {
                Log.d("MyEventCalendar", "Line : " + line);
                String[] tokens = line.split(",");
    
                SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
                Date startDate;
                Date endDate;
    
                startDate = sdf.parse(tokens[0]);
                endDate = sdf.parse(tokens[1]);
    
                EventCalendar myEventCalendar = new EventCalendar();
                myEventCalendar.setTitle(tokens[2]);
                if (tokens.length >= 4){
                    myEventCalendar.setDescription(tokens[3]);
                }else {
                    myEventCalendar.setDescription(null);
                }
    
                myEventCalendar.setStartEvent(String.valueOf(startDate.getTime()));
                myEventCalendar.setEndEvent(String.valueOf(endDate.getTime()));
                mesEvent.add(myEventCalendar);
    
                ContentResolver cr = Objects.requireNonNull(myContext.getContentResolver());
                ContentValues values = new ContentValues();
                values.put(CalendarContract.Events.DTSTART, myEventCalendar.getStartEvent());
                values.put(CalendarContract.Events.DTEND, myEventCalendar.getEndEvent());
                values.put(CalendarContract.Events.TITLE, myEventCalendar.getTitle());
                values.put(CalendarContract.Events.DESCRIPTION, myEventCalendar.getDescription());
                values.put(CalendarContract.Events.CALENDAR_ID, 1);
                values.put(CalendarContract.Events.EVENT_LOCATION,0);
                values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
                Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
    
            }
        } catch (IOException | ParseException e) {
            Log.i("Tag", "Insert failed");
            e.printStackTrace();
        }
    
    }