Android Agregar evento al calendario con Intent, obtiene el identificador de evento

Estoy tratando de agregar evento a través de una intención de calendario. Sin embargo, no puedo averiguar cómo obtener el ID de evento del evento que acaba de agregar.

Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); intent.putExtra("beginTime", sdate.getTime()); intent.putExtra("endTime", edate.getTime()); intent.putExtra("allDay", true); intent.putExtra("rrule", "FREQ=YEARLY"); intent.putExtra("title", "A Test Event from android app"); intent.putExtra("description", "Description here"); intent.putExtra("eventLocation", "location here here here"); 

Leí extensamente sobre otros recursos y no puedo encontrar una respuesta. Intenté startActivityForResult pero no puedo conseguirlo funcionar. Otros métodos que intento no pueden buscarlo hasta que la actividad termina.

¿Hay alguna otra forma de obtener el ID del evento después de que el evento se haya agregado al calendario? Necesito usar el método de intención para esto.

Pruebe esta única solución:

 import android.content.ContentResolver; import android.content.ContentValues; import android.net.Uri; public class CalenderUtils { /** * Add a new event into a native Google calendar. Add alert notification by setting <code>isRemind</code> as <code>true</code>. * @param cr - ContentResolver * @param title - Event title * @param addInfo - Event description * @param place - Event place * @param status - <code>int</code> This information is sufficient for most entries: tentative (0), confirmed (1) or canceled (2): * @param startDate - <code>long</code> event start time in mls * @param isRemind - <code>boolean</code> need to remind about event before? * @param isMailService - <code>boolean</code>. Adding attendees to the meeting * @return <code>long</code> eventID */ public static long addEventToCalender(ContentResolver cr, String title, String addInfo, String place, int status, long startDate, boolean isRemind, boolean isMailService) { String eventUriStr = "content://com.android.calendar/events"; ContentValues event = new ContentValues(); // id, We need to choose from our mobile for primary its 1 event.put("calendar_id", 1); event.put("title", title); event.put("description", addInfo); event.put("eventLocation", place); event.put("eventTimezone", "UTC/GMT +2:00"); // For next 1hr long endDate = startDate + 1000 * 60 * 60; event.put("dtstart", startDate); event.put("dtend", endDate); //If it is bithday alarm or such kind (which should remind me for whole day) 0 for false, 1 for true // values.put("allDay", 1); event.put("eventStatus", status); event.put("hasAlarm", 1); Uri eventUri = cr.insert(Uri.parse(eventUriStr), event); long eventID = Long.parseLong(eventUri.getLastPathSegment()); if (isRemind) { String reminderUriString = "content://com.android.calendar/reminders"; ContentValues reminderValues = new ContentValues(); reminderValues.put("event_id", eventID); // Default value of the system. Minutes is a integer reminderValues.put("minutes", 5); // Alert Methods: Default(0), Alert(1), Email(2), SMS(3) reminderValues.put("method", 1); cr.insert(Uri.parse(reminderUriString), reminderValues); //Uri reminderUri = } if (isMailService) { String attendeuesesUriString = "content://com.android.calendar/attendees"; /********* To add multiple attendees need to insert ContentValues multiple times ***********/ ContentValues attendeesValues = new ContentValues(); attendeesValues.put("event_id", eventID); // Attendees name attendeesValues.put("attendeeName", "xxxxx"); // Attendee email attendeesValues.put("attendeeEmail", "[email protected]"); // Relationship_Attendee(1), Relationship_None(0), Organizer(2), Performer(3), Speaker(4) attendeesValues.put("attendeeRelationship", 0); // None(0), Optional(1), Required(2), Resource(3) attendeesValues.put("attendeeType", 0); // None(0), Accepted(1), Decline(2), Invited(3), Tentative(4) attendeesValues.put("attendeeStatus", 0); cr.insert(Uri.parse(attendeuesesUriString), attendeesValues); //Uri attendeuesesUri = } return eventID; } } 

Copypasted esta clase de mi proyecto así que usted es agradable cambiar los nombres como usted prefiere. Como se nota aquí u recibir valor de id después de la inserción.

Si necesita obtener reminderId o id reunión con los asistentes – tiene que manejar un valor de retorno de cr.insert... y luego parce uri long id = Long.parseLong(uri.getLastPathSegment());

Aquí hay una información adicional: CalendarContract.Events y capítulo Calendario

  • Uso de Calender.LONG en getDisplayNames () sin resolver
  • ¿Cómo puedo averiguar el resultado de mi intención de calendario?
  • Vista de calendario de Android
  • Cómo crear calendario simple en android
  • Pequeños números en CalendarView android
  • Nombre del mes como cadena
  • El recordatorio de eventos no funciona para eventos de calendario en android
  • Cómo mostrar sólo el mes actual en la vista de calendario de Android
  • Actualización de eventos de calendario de Android SQLiteException
  • Calendario Android DTSTART y DTEND problemas
  • Cómo abrir la aplicación de calendario en un calendario específico
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.