private void addCalendarEvent() {
    // Peter:
    // http://code.tutsplus.com/tutorials/android-essentials-adding-events-to-the-users-calendar--mobile-8363
    // Crashes: Intent intent = new Intent(Intent.ACTION_INSERT);
    // Crashes: intent.setData(CalendarContract.Events.CONTENT_URI);
    Intent intent = new Intent(Intent.ACTION_EDIT); // ACTION_INSERT causes crash
    intent.setType("vnd.android.cursor.item/event");

    intent.putExtra(CalendarContract.Events.TITLE, "Restring: " + mRacket.getName());

    StrngData c = mRacket.getStrngDataByLastDate(); // retrieve string data
    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy");
    if (c == null) {
      // No string data - use racket data
      intent.putExtra(CalendarContract.Events.EVENT_LOCATION, mRacket.getPurchaseLocation());
      intent.putExtra(
          CalendarContract.Events.DESCRIPTION, "String Tension: " + mRacket.getStringTension());
    } else {
      // Use string data
      intent.putExtra(CalendarContract.Events.EVENT_LOCATION, c.getLocation());
      intent.putExtra(
          CalendarContract.Events.DESCRIPTION,
          "Last String Date: "
              + sdf.format(c.getDate())
              + "\nMains: "
              + c.getMainTension()
              + "\nCrosses: "
              + c.getCrossTension());
    }

    GregorianCalendar calDate = new GregorianCalendar(); // default to today's date
    intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
    intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, calDate.getTimeInMillis());
    intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, calDate.getTimeInMillis());

    startActivity(intent);
  }