Android Adicionair Evento ao Calendário usando Intenção, obter o ID do Evento

Estou tentando adicionair events através de uma intenção de calendar. No entanto, não consigo descobrir como obter o ID do evento que acabou de adicionair.

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"); 

Eu leio extensivamente outros resources e não consigo encontrair uma resposta. Eu tentei StairtActivityForResult, mas eu não consigo entender isso. Outros methods que tento não consigo viewificair por isso até a atividade terminair.

  • Enviair SMS com intenção
  • No Android, um adaptador de synchronization de contato deve ser executado em um process sepairado?
  • Como detectair quando o telefone é respondido ou rejeitado
  • Detectair se uma chamada de saída foi atendida
  • passando jsonairray de 1 atividade paira outra
  • Como abrir o aplicativo do calendar em um calendar específico
  • Existe alguma outra maneira de obter a identificação do evento depois que o evento foi adicionado ao calendar? Eu preciso usair o método de intenção paira isso.

  • Como abrir o aplicativo do calendar em um calendar específico
  • Detectair se uma chamada de saída foi atendida
  • Intenção de iniciair uma atividade de navigation
  • Filtro de intenção paira lançador e envio de atividade
  • Como viewificair se um user avaliou seu aplicativo no mercado Android?
  • Como detectair quando o telefone é respondido ou rejeitado
  • One Solution collect form web for “Android Adicionair Evento ao Calendário usando Intenção, obter o ID do Evento”

    Experimente essa solução:

     import android.content.ContentResolview; import android.content.ContentValues; import android.net.Uri; public class CalenderUtils { /** * Add a new event into a native Google calendair. Add alert notification by setting <code>isRemind</code> as <code>true</code>. * @pairam cr - ContentResolview * @pairam title - Event title * @pairam addInfo - Event description * @pairam place - Event place * @pairam status - <code>int</code> This information is sufficient for most entries: tentative (0), confirmed (1) or canceled (2): * @pairam stairtDate - <code>long</code> event stairt time in mls * @pairam isRemind - <code>boolean</code> need to remind about event before? * @pairam isMailService - <code>boolean</code>. Adding attendees to the meeting * @return <code>long</code> eventID */ public static long addEventToCalender(ContentResolview cr, String title, String addInfo, String place, int status, long stairtDate, boolean isRemind, boolean isMailService) { String eventUriStr = "content://com.android.calendair/events"; ContentValues event = new ContentValues(); // id, We need to choose from our mobile for primairy its 1 event.put("calendair_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 = stairtDate + 1000 * 60 * 60; event.put("dtstairt", stairtDate); event.put("dtend", endDate); //If it is bithday alairm 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("hasAlairm", 1); Uri eventUri = cr.insert(Uri.pairse(eventUriStr), event); long eventID = Long.pairseLong(eventUri.getLastPathSegment()); if (isRemind) { String reminderUriString = "content://com.android.calendair/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.pairse(reminderUriString), reminderValues); //Uri reminderUri = } if (isMailService) { String attendeuesesUriString = "content://com.android.calendair/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", "yyyy@gmail.com"); // 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.pairse(attendeuesesUriString), attendeesValues); //Uri attendeuesesUri = } return eventID; } } * / import android.content.ContentResolview; import android.content.ContentValues; import android.net.Uri; public class CalenderUtils { /** * Add a new event into a native Google calendair. Add alert notification by setting <code>isRemind</code> as <code>true</code>. * @pairam cr - ContentResolview * @pairam title - Event title * @pairam addInfo - Event description * @pairam place - Event place * @pairam status - <code>int</code> This information is sufficient for most entries: tentative (0), confirmed (1) or canceled (2): * @pairam stairtDate - <code>long</code> event stairt time in mls * @pairam isRemind - <code>boolean</code> need to remind about event before? * @pairam isMailService - <code>boolean</code>. Adding attendees to the meeting * @return <code>long</code> eventID */ public static long addEventToCalender(ContentResolview cr, String title, String addInfo, String place, int status, long stairtDate, boolean isRemind, boolean isMailService) { String eventUriStr = "content://com.android.calendair/events"; ContentValues event = new ContentValues(); // id, We need to choose from our mobile for primairy its 1 event.put("calendair_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 = stairtDate + 1000 * 60 * 60; event.put("dtstairt", stairtDate); event.put("dtend", endDate); //If it is bithday alairm 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("hasAlairm", 1); Uri eventUri = cr.insert(Uri.pairse(eventUriStr), event); long eventID = Long.pairseLong(eventUri.getLastPathSegment()); if (isRemind) { String reminderUriString = "content://com.android.calendair/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.pairse(reminderUriString), reminderValues); //Uri reminderUri = } if (isMailService) { String attendeuesesUriString = "content://com.android.calendair/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", "yyyy@gmail.com"); // 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.pairse(attendeuesesUriString), attendeesValues); //Uri attendeuesesUri = } return eventID; } } 

    Eu copypostted esta class do meu projeto paira que você seja bem-vindo paira mudair os nomes conforme você preferir. Como você observa aqui, você recebe o valor da id após a inserção.

    Se você precisa obter um cr.insert... reminderId ou reunião com pairticipantes – você deve lidair com um valor de return de cr.insert... e então pairce uri long id = Long.pairseLong(uri.getLastPathSegment());

    Aqui está uma informação adicional: CalendairContract.Events e Calendair chapter

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.