Reading and Writing Calendar

My goal is to read and write the Calendar.

I can read data from content: // calendar / calendars and content: // calendar / events

String uriString = "content://calendar/calendars";
  Log.i("INFO", "Reading content from " + uriString);
  readContent(uriString);
  uriString = "content://calendar/events";
  Log.i("INFO", "Reading content from " + uriString);
  readContent(uriString);

private void readContent(String uriString) {

  Uri uri = Uri.parse(uriString);
  Cursor cursor = mContext.getContentResolver().query(uri, null, null,
    null, null);
  if (cursor != null && cursor.getCount() > 0) {
   cursor.moveToFirst();
   String columnNames[] = cursor.getColumnNames();
   String value = "";
   String colNamesString = "";
   do {
    value = "";

    for (String colName : columnNames) {
     value += colName + " = ";
     value += cursor.getString(cursor.getColumnIndex(colName))
       + " ||";
    }

    Log.e("INFO : ", value);
   } while (cursor.moveToNext());

  }

 }

I also insert a new entry in the calendar, for example:

String calUriString = "content://calendar/calendars";
   ContentValues values = new ContentValues();
   values.put("name", "Code Generate Calendar");
   values.put("displayName", "Code Generate Calendar");
   values.put("hidden", 0);
   values.put("color", "-7581685");
   values.put("access_level", "700");
   values.put("selected", "1");
   values.put("timezone", "Asia/Karachi");

   Uri calendarUri = context.getContentResolver().insert(
   Uri.parse(calUriString), values);

but it does not appear on the calendar.

when I am going to insert new events into the Calendar, for example:

   ContentValues values = new ContentValues();
   values.put("calendar_id", 4);
   values.put("dtend", "1277337600000");
   values.put("dtstart", "1277251200000");
   // values.put("title", "first TEst event");
   values.put("transparency", 1);
   values.put("selected", 1);
   values.put("color", "-16380578");
   // values.put("lastDate", "6/25/2010");
   //values.put("access_level", 700);
   values.put("eventStatus", 1);
   values.put("eventTimezone", "UTC");
   values.put("timezone", "Asia/Karachi");
   values.put("allDay", 1);
   String eventUriString = "content://calendar/events";
   Uri eventUri = context.getContentResolver().insert(
   Uri.parse(eventUriString), values);

column exclusion exception.

how is this possible. Thanks

+3
source share
3 answers

The calendar content provider is not part of the Android SDK. Previously, it has changed between Android releases and will do it again. It may not work on some devices where they replaced the default calendar application with their own.

Do not use undocumented content providers.

, , 32 - API- Google GData .

+7

// 2.2 , 2,2 ://com.android.calendar ://

String calUriString = "content://com.android.calendar/events";
            ContentValues values = new ContentValues();

values.put("calendar_id",2); //id, We need to choose from our mobile for primary its 1
values.put("title", "Birthday");
values.put("description", "Go home at 2pm");
values.put("eventLocation", "Home");
long startTime = System.currentTimeMillis() + 1000 * 60 * 60*24; // Next day

values.put("dtstart", startTime);
values.put("dtend", startTime);

values.put("allDay", 1); //If it is bithday alarm or such kind (which should remind me for whole day) 0 for false, 1 for true

values.put("eventStatus", 1); // This information is sufficient for most entries tentative (0), confirmed (1) or canceled (2):

values.put("visibility", 3); // visibility to default (0), confidential (1), private (2), or public (3):

values.put("transparency", 0); // You can control whether an event consumes time  opaque (0) or transparent (1).

values.put("hasAlarm", 1); // 0 for false, 1 for true


Uri calendarUri = getApplicationContext().getContentResolver().insert(Uri.parse(calUriString), values);
0

. , - . ( , API 14?)

- , . ( dtstart String)

http://developer.android.com/reference/android/provider/CalendarContract.EventsColumns.html#DTSTART

For more information, there is another resource on developer.android.com: http://developer.android.com/guide/topics/providers/calendar-provider.html

0
source

Source: https://habr.com/ru/post/1751384/


All Articles