Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Evento de sincronización agregado mediante programación con google calendar en android

Estoy intentando agregar un evento al calendario de Android, y especifico que el evento se agregará al calendario de gmail para sincronizar automáticamente con el calendario de Google. El problema es que los eventos añadidos por programación no se sincronizan con el calendario de Google, pero si lo agrego manual en el teléfono sincroniza con el calendario de Google. No sé por qué.

Este es el código que utilizo para agregar el evento:

  • ¿Cómo desinstalar la propia aplicación de / system / app?
  • API de Android o biblioteca para archivos de Microsoft Office
  • Enlace de datos con srcCompat
  • Programaticamente margen / relleno de textview en un listview
  • Android: los márgenes especificados en estilo personalizado no tienen efecto
  • No se puede actualizar build.gradle para usar la biblioteca de soporte 23.0.1
  • ArrayList<MyCalendar> calendars = new ArrayList<MyCalendar>(); String[] projection = new String[] { "_id", "name" }; Uri calUri = getCalendarURI(false); Cursor managedCursor = managedQuery(calUri, projection, "selected=1", null, null); String calName = null; String calId = null; if (managedCursor.moveToFirst()) { int nameColumn = managedCursor.getColumnIndex("name"); int idColumn = managedCursor.getColumnIndex("_id"); do { calName = managedCursor.getString(nameColumn); calId = managedCursor.getString(idColumn); calendars.add(new MyCalendar(Integer.parseInt(calId), calName)); } while (managedCursor.moveToNext()); } Toast.makeText(getBaseContext(), calName + " " + calId, Toast.LENGTH_LONG).show(); Calendar cal = Calendar.getInstance(); ContentValues event = new ContentValues(); event.put("calendar_id", 2); event.put("title", "Test Event2"); event.put("description", "Hiii Buddy"); long startTime = cal.getTimeInMillis(); long endTime = cal.getTimeInMillis() + 60 * 60 * 1000; event.put("dtstart", startTime); event.put("dtend", endTime); event.put("allDay", 0); event.put("eventStatus", 1);// tentative 0, confirmed 1 canceled 2 event.put("visibility", 3);// default 0 confidential 1 private 2 // public 3 event.put("transparency", 0);// opaque 0 transparent 1 event.put("hasAlarm", 1); // 0 false, 1 true Uri eventsUri = getCalendarURI(true); Uri url = getContentResolver().insert(eventsUri, event); 

    Así que el evento se agregó con éxito al calendario, pero no se muestra en el calendario de Google en la web (no sincronizar), pero si agrego el evento de forma manual que hace la sincronización!

  • Descodificación de paquetes Airplay en Java o C / C ++ en Android
  • Comando adb para obtener la dirección IP asignada por el operador
  • La aplicación Phonegap muere en segundo plano mientras recoge la ubicación
  • Cómo identificar la llamada entrante y la llamada saliente en android
  • Phonegap y prompt ()
  • Android - Propósito de la acción de voz personalizada
  • 3 Solutions collect form web for “Evento de sincronización agregado mediante programación con google calendar en android”

    Puedes sincronizar tu evento después de añadirlo por esta función, Ha funcionado para mí (en API 8 y posteriores):

     public static void syncCalendar(Context context, String calendarId) { ContentResolver cr = context.getContentResolver(); ContentValues values = new ContentValues(); values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); values.put(CalendarContract.Calendars.VISIBLE, 1); cr.update( ContentUris.withAppendedId(getCalendarUri(), Long.parseLong(calendarId)), values, null, null); } 

    Pruebe este código para insertar un evento en el calendario de Android, así como en Google Calendar:

      ContentValues values = new ContentValues(); cal_id = String.valueOf(p1); values.put("calendar_id", p1); values.put("title", title1); values.put("allDay", 0); values.put("dtstart", settime); values.put("dtend", cal.getTimeInMillis()+60*60*1000); values.put("description", desc1); values.put("visibility", 0); values.put("transparency", 0); values.put("hasAttendeeData", 1); values.put("hasAlarm", 0); event = cr.insert(EVENTS_URI, values); event1=event; dat1 = event.toString(); long id=-1; if (event != null) { id = Long.parseLong(event.getLastPathSegment()); ContentValues values1 = new ContentValues(); values1.put("event_id", id); values1.put("method", 1); //METHOD_ALERT Uri reminder = Uri.parse(getCalendarUriBase(this) + "reminders"); this.getContentResolver().insert(reminder, values1); if(s.length() > 0 || partmail.length() > 0) { //REQUIRES FOLLOWING CODE 

    Este código se utiliza para agregar el evento sincronizado al calendario de google

      ContentValues attendees = new ContentValues(); attendees.put("event_id", id); attendees.put("attendeeEmail", partmail1); attendees.put("attendeeRelationship", 2);//RELATIONSHIP_ATTENDEE attendees.put("attendeeStatus", 3); //ATTENDEE_STATUS_INVITED attendees.put("attendeeType", 1); //TYPE_REQUIRED id1=(int)id; alarmid = (int) id; Uri attendeesUri = null; if (Integer.parseInt(Build.VERSION.SDK) >= 8 ) { attendeesUri = Uri.parse("content://com.android.calendar/attendees"); } else if(Integer.parseInt(Build.VERSION.SDK) < 8) { attendeesUri = Uri.parse("content://calendar/attendees"); } this.getContentResolver().insert(attendeesUri, attendees); Toast.makeText(this, "Task Scheduled Successfully", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Could not create Task!", Toast.LENGTH_SHORT); } // reminder insert Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(this) + "reminders"); values = new ContentValues(); values.put( "event_id", id); values.put( "method", 1 ); values.put( "minutes", 0 ); cr.insert( REMINDERS_URI, values ); 

    Obtenga el Uri del calendario, ya que es diferente para los niveles de API, como hasta 8, mayor que 8 y mayor que 11.

     private String getCalendarUriBase(Context con) { String calendarUriBase = null; Uri calendars = Uri.parse("content://calendar/calendars"); Cursor managedCursor = null; try { managedCursor = managedQuery(calendars, null, null, null, null); } catch (Exception e) { // eat } if (managedCursor != null) { calendarUriBase = "content://calendar/"; } else { calendars = Uri.parse("content://com.android.calendar/calendars"); try { managedCursor = managedQuery(calendars, null, null, null, null); } catch (Exception e) { // statement to print the stacktrace } if (managedCursor != null) { calendarUriBase = "content://com.android.calendar/"; } } return calendarUriBase; 

    }

    Utilice el api de calendario google proporcionado aquí

    La referencia anterior es algo general ya que Android no proporciona una API oficial. Por lo tanto, otra solución más específica de Android es un Android Tutorial-Programación con Calendario

    Que contiene un ejemplo de trabajo también. También, tenga cuidado en la Declaración de permiso, como READ_CALENDAR, WRITE_CALENDAR

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.