Skip to content Skip to sidebar Skip to footer

Event Not Saved In Calendar

I want to save an event in the calendar directly, without openning the calendar app. I have found that in some devices the event is not saved in calendar, but I am not getting any

Solution 1:

Find the solution :

Follow the steps it will create event directly :

Manifest.xml

Add permissions in Manifest

<uses-permissionandroid:name="android.permission.WRITE_CALENDAR" /><uses-permissionandroid:name="android.permission.READ_CALENDAR" />

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="testpreference.com.testcalendar.MainActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Calendars" /><Spinnerandroid:id="@+id/calendarid_spinner"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/newevent_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Event"android:layout_gravity="center_horizontal"

        /></LinearLayout>

MainActivity.java

import android.os.Bundle;
        import android.support.v7.app.AppCompatActivity;
        import android.view.View;
        import android.widget.ArrayAdapter;
        import android.widget.Button;
        import android.widget.Spinner;
        import android.widget.Toast;

        import java.util.ArrayList;
        import java.util.Date;
        import java.util.Enumeration;
        import java.util.Hashtable;
        import java.util.List;

        publicclassMainActivityextendsAppCompatActivity {

            privatestaticfinalStringTAG="MainActivity";
            private Spinner calendarIdSpinner;
            private Hashtable<String,String> calendarIdTable;
            private Button newEventButton;


            @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                calendarIdSpinner = (Spinner) findViewById(R.id.calendarid_spinner);
                newEventButton = (Button) findViewById(R.id.newevent_button);

                newEventButton.setOnClickListener(newView.OnClickListener() {
                    @OverridepublicvoidonClick(View v) {
                        if (CalendarHelper.haveCalendarReadWritePermissions(MainActivity.this))
                        {
                            addNewEvent();
                        }
                        else
                        {
                            CalendarHelper.requestCalendarReadWritePermission(MainActivity.this);
                        }
                    }
                });


                calendarIdSpinner.setOnItemSelectedListener(newCustomOnItemSelectedListener());

                if (CalendarHelper.haveCalendarReadWritePermissions(this))
                {
                    //Load calendars
                    calendarIdTable = CalendarHelper.listCalendarId(this);

                    updateCalendarIdSpinner();

                }


            }

            privatevoidupdateCalendarIdSpinner()
            {
                if (calendarIdTable==null)
                {
                    return;
                }

                List<String> list = newArrayList<String>();

                Enumeratione= calendarIdTable.keys();
                while (e.hasMoreElements()) {
                    Stringkey= (String) e.nextElement();
                    list.add(key);
                }

                ArrayAdapter<String> dataAdapter = newArrayAdapter<String>(this,
                        android.R.layout.simple_spinner_item, list);
                dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                calendarIdSpinner.setAdapter(dataAdapter);
            }

            @OverridepublicvoidonRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

                if (requestCode==CalendarHelper.CALENDARHELPER_PERMISSION_REQUEST_CODE)
                {
                    if (CalendarHelper.haveCalendarReadWritePermissions(this))
                    {
                        Toast.makeText(this, (String)"Have Calendar Read/Write Permission.",
                                Toast.LENGTH_LONG).show();

                    }

                }

                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            }

            privatevoidaddNewEvent()
            {
                if (calendarIdTable==null)
                {
                    Toast.makeText(this, (String)"No calendars found. Please ensure at least one google account has been added.",
                            Toast.LENGTH_LONG).show();
                    //Load calendars
                    calendarIdTable = CalendarHelper.listCalendarId(this);

                    updateCalendarIdSpinner();

                    return;
                }


                finallongoneHour=1000 * 60 * 60;
                finallongtenMinutes=1000 * 60 * 10;

                longoneHourFromNow= (newDate()).getTime() + oneHour;
                longtenMinutesFromNow= (newDate()).getTime() + tenMinutes;


                StringcalendarString= calendarIdSpinner.getSelectedItem().toString();

                intcalendar_id= Integer.parseInt(calendarIdTable.get(calendarString));

                CalendarHelper.MakeNewCalendarEntry(this, "Test", "Add event", "Somewhere",tenMinutesFromNow,tenMinutesFromNow+oneHour,false,true,calendar_id,3);

            }

        }
  1. Create class for calendar selection

    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.Toast;
    
    publicclassCustomOnItemSelectedListenerimplementsOnItemSelectedListener {
    
        privatestaticfinalStringTAG="OnItemSelectedListener";
    
        publicvoidonItemSelected(AdapterView<?> parent, View view, int pos,long id) {
            Toast.makeText(parent.getContext(),
                    "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                    Toast.LENGTH_SHORT).show();
        }
    
        @OverridepublicvoidonNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            Log.v(TAG,"onNohingSelected() called.");
        }
    
    }
    
  2. CalendarHelper.java

    import android.Manifest;
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.database.Cursor;
    import android.net.Uri;
    import android.provider.CalendarContract.Events;
    import android.provider.CalendarContract.Reminders;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.util.Log;
    
    import java.util.ArrayList;
    import java.util.Hashtable;
    import java.util.List;
    import java.util.TimeZone;
    
    publicclassCalendarHelper {
    
        //Remember to initialize this activityObj first, by calling initActivityObj(this) from//your activityprivatestaticfinalStringTAG="CalendarHelper";
        publicstaticfinalintCALENDARHELPER_PERMISSION_REQUEST_CODE=99;
    
    
        publicstaticvoidMakeNewCalendarEntry(Activity caller,String title,String description,String location,long startTime,long endTime, boolean allDay,boolean hasAlarm, int calendarId,int selectedReminderValue) {
    
            ContentResolvercr= caller.getContentResolver();
            ContentValuesvalues=newContentValues();
            values.put(Events.DTSTART, startTime);
            values.put(Events.DTEND, endTime);
            values.put(Events.TITLE, title);
            values.put(Events.DESCRIPTION, description);
            values.put(Events.CALENDAR_ID, calendarId);
            values.put(Events.STATUS, Events.STATUS_CONFIRMED);
    
    
            if (allDay)
            {
                values.put(Events.ALL_DAY, true);
            }
    
            if (hasAlarm)
            {
                values.put(Events.HAS_ALARM, true);
            }
    
            //Get current timezone
            values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
            Log.i(TAG, "Timezone retrieved=>"+TimeZone.getDefault().getID());
            Uriuri= cr.insert(Events.CONTENT_URI, values);
            Log.i(TAG, "Uri returned=>"+uri.toString());
            // get the event ID that is the last element in the UrilongeventID= Long.parseLong(uri.getLastPathSegment());
    
            if (hasAlarm)
            {
                ContentValuesreminders=newContentValues();
                reminders.put(Reminders.EVENT_ID, eventID);
                reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT);
                reminders.put(Reminders.MINUTES, selectedReminderValue);
    
                Uriuri2= cr.insert(Reminders.CONTENT_URI, reminders);
            }
    
    
        }
    
        publicstaticvoidrequestCalendarReadWritePermission(Activity caller)
        {
            List<String> permissionList = newArrayList<String>();
    
            if  (ContextCompat.checkSelfPermission(caller,Manifest.permission.WRITE_CALENDAR)!=PackageManager.PERMISSION_GRANTED)
            {
                permissionList.add(Manifest.permission.WRITE_CALENDAR);
    
            }
    
            if  (ContextCompat.checkSelfPermission(caller,Manifest.permission.READ_CALENDAR)!=PackageManager.PERMISSION_GRANTED)
            {
                permissionList.add(Manifest.permission.READ_CALENDAR);
    
            }
    
            if (permissionList.size()>0)
            {
                String [] permissionArray = newString[permissionList.size()];
    
                for (int i=0;i<permissionList.size();i++)
                {
                    permissionArray[i] = permissionList.get(i);
                }
    
                ActivityCompat.requestPermissions(caller,
                        permissionArray,
                        CALENDARHELPER_PERMISSION_REQUEST_CODE);
            }
    
        }
    
        publicstatic Hashtable listCalendarId(Context c) {
    
            if (haveCalendarReadWritePermissions((Activity)c)) {
    
                String projection[] = {"_id", "calendar_displayName"};
                Uri calendars;
                calendars = Uri.parse("content://com.android.calendar/calendars");
    
                ContentResolvercontentResolver= c.getContentResolver();
                CursormanagedCursor= contentResolver.query(calendars, projection, null, null, null);
    
                if (managedCursor.moveToFirst())
                {
                    String calName;
                    String calID;
                    intcont=0;
                    intnameCol= managedCursor.getColumnIndex(projection[1]);
                    intidCol= managedCursor.getColumnIndex(projection[0]);
                    Hashtable<String,String> calendarIdTable = newHashtable<>();
    
                    do
                    {
                        calName = managedCursor.getString(nameCol);
                        calID = managedCursor.getString(idCol);
                        Log.v(TAG, "CalendarName:" + calName + " ,id:" + calID);
                        calendarIdTable.put(calName,calID);
                        cont++;
                    } while (managedCursor.moveToNext());
                    managedCursor.close();
    
                    return calendarIdTable;
                }
    
            }
    
            returnnull;
    
        }
    
        publicstaticbooleanhaveCalendarReadWritePermissions(Activity caller)
        {
            intpermissionCheck= ContextCompat.checkSelfPermission(caller,
                    Manifest.permission.READ_CALENDAR);
    
            if (permissionCheck== PackageManager.PERMISSION_GRANTED)
            {
                permissionCheck = ContextCompat.checkSelfPermission(caller,
                        Manifest.permission.WRITE_CALENDAR);
    
                if (permissionCheck== PackageManager.PERMISSION_GRANTED)
                {
                    returntrue;
                }
            }
    
            returnfalse;
        }
    
    }
    

Post a Comment for "Event Not Saved In Calendar"