Skip to content Skip to sidebar Skip to footer

Retrieve The Default Calendar Id In Android

I have the following code for adding event to calendar. The problem is that I don't know how to retrieve the default calendar id. long calID = 3; long startMillis = 0; long endMil

Solution 1:

To get the list of calendars, you need to query the ContentResolver like this:

public MyCalendar [] getCalendar(Context c) {

    String projection[] = {"_id", "calendar_displayName"};
    Uri calendars;
    calendars = Uri.parse("content://com.android.calendar/calendars");

    ContentResolver contentResolver = c.getContentResolver();
    Cursor managedCursor = contentResolver.query(calendars, projection, null, null, null);

    if (managedCursor.moveToFirst()){
        m_calendars = new MyCalendar[managedCursor.getCount()];
        String calName;
        String calID;
        int cont= 0;
        int nameCol = managedCursor.getColumnIndex(projection[1]);
        int idCol = managedCursor.getColumnIndex(projection[0]);
        do {
            calName = managedCursor.getString(nameCol);
            calID = managedCursor.getString(idCol);
            m_calendars[cont] = new MyCalendar(calName, calID);
            cont++;
        } while(managedCursor.moveToNext());
        managedCursor.close();
    }
    return m_calendars;

}

Solution 2:

I used following code to get the calendar ID.

privatefungetCalendarId(context: Context) : Long? {
    val projection = arrayOf(Calendars._ID, Calendars.CALENDAR_DISPLAY_NAME)

    var calCursor = context.contentResolver.query(
        Calendars.CONTENT_URI,
        projection,
        Calendars.VISIBLE + " = 1 AND " + Calendars.IS_PRIMARY + "=1",
        null,
        Calendars._ID + " ASC"
    )

    if (calCursor != null && calCursor.count <= 0) {
        calCursor = context.contentResolver.query(
            Calendars.CONTENT_URI,
            projection,
            Calendars.VISIBLE + " = 1",
            null,
            Calendars._ID + " ASC"
        )
    }

    if (calCursor != null) {
        if (calCursor.moveToFirst()) {
            val calName: String
            val calID: String
            val nameCol = calCursor.getColumnIndex(projection[1])
            val idCol = calCursor.getColumnIndex(projection[0])

            calName = calCursor.getString(nameCol)
            calID = calCursor.getString(idCol)

            Log.d("Calendar name = $calName Calendar ID = $calID")

            calCursor.close()
            return calID.toLong()
        }
    }
    returnnull
}

So do not pass 0, 1 or 3 as Calendar ID. Use above function instead.

Also, check if Calendar ID is null and do not perform operations with it if it is null.

valcalendarId= getCalendarId(context)
        if (calendarId != null) {
        //Call operations e.g.: Insert operation
        }

Solution 3:

There's a IS_PRIMARY column in CalendarContract.CalendarColumns. You query with selection:

CalendarContract.CalendarColumns.IS_PRIMARY + "=1"

However, this is since SDK 17

Solution 4:

Some latest versions have issue, there is different visible calendar list so below is the code to select PRIMARY calendar and in older devices this query return 0 record, so used second one if 1st one return 0 records.

CursorcalCursor= mContext.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, projection, CalendarContract.Calendars.VISIBLE + " = 1 AND "  + CalendarContract.Calendars.IS_PRIMARY + "=1", null, CalendarContract.Calendars._ID + " ASC");
if(calCursor.getCount() <= 0){
    calCursor = mContext.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, projection, CalendarContract.Calendars.VISIBLE + " = 1", null, CalendarContract.Calendars._ID + " ASC");
}

Solution 5:

This code worked for me

privatefuncalendarId(): Long? {
    val uri = CalendarContract.Calendars.CONTENT_URI
    var cursor: Cursor?= null//Submit calendar queryif (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED) {
        cursor = contentResolver?.query(uri, CALENDAR_PROJECTION, null, null, null)

    } else{
        ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.WRITE_CALENDAR), PERMISSION_REQUEST_WRITE_CALENDAR) }

     if (cursor != null) {
         Log.d("MainActivity", "Cursor is present")
         if(cursor.moveToFirst()) {
             //Get required fieldsval calID = cursor.getLong(CAL_ID)
             val calName = cursor.getLong(CAL_NAME)
             Log.d("MainActivity", "Calendar ID: $calID, Calendar Name: $calName")
             cursor.close()
             return calID
         }
     }

    //return nullreturnnull
}

Post a Comment for "Retrieve The Default Calendar Id In Android"