Solución:
Aquí está el código que le permitirá agregar un evento directamente:
import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.provider.CalendarContract;
import java.util.Calendar;
// Construct event details
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 9, 14, 8, 45);
endMillis = endTime.getTimeInMillis();
// Insert Event
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
TimeZone timeZone = TimeZone.getDefault();
values.put(CalendarContract.Events.DTSTART, startMillis);
values.put(CalendarContract.Events.DTEND, endMillis);
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
values.put(CalendarContract.Events.TITLE, "Walk The Dog");
values.put(CalendarContract.Events.DESCRIPTION, "My dog is bored, so we're going on a really long walk!");
values.put(CalendarContract.Events.CALENDAR_ID, 3);
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
// Retrieve ID for new event
String eventID = uri.getLastPathSegment();
Necesitará CALENDAR_ID, así que aquí le mostramos cómo consultar la lista de calendarios:
Uri uri = CalendarContract.Calendars.CONTENT_URI;
String[] projection = new String[] {
CalendarContract.Calendars._ID,
CalendarContract.Calendars.ACCOUNT_NAME,
CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
CalendarContract.Calendars.NAME,
CalendarContract.Calendars.CALENDAR_COLOR
};
Cursor calendarCursor = managedQuery(uri, projection, null, null, null);
Deberá solicitar el android.permission.READ_CALENDAR
permiso para que todo esto funcione.
Si desea evitar tener que solicitar permisos, también puede pedirle a la aplicación Calendario que cree un nuevo evento en su nombre utilizando un Intent
:
Intent intent = new Intent(Intent.ACTION_INSERT)
.setType("vnd.android.cursor.item/event")
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY , false) // just included for completeness
.putExtra(Events.TITLE, "My Awesome Event")
.putExtra(Events.DESCRIPTION, "Heading out with friends to do something awesome.")
.putExtra(Events.EVENT_LOCATION, "Earth")
.putExtra(Events.RRULE, "FREQ=DAILY;COUNT=10")
.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
.putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE)
.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
startActivity(intent);
Puede usar el siguiente código para configurar la zona horaria y me funciona
TimeZone timeZone = TimeZone.getDefault();
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
Asegúrese de que no está usando ‘visibilidad’ para dispositivos ICS y JellyBean (apiLevel> = 14)
Prueba esto –
ContentValues values= new ContentValues();
int apiLevel = android.os.Build.VERSION.SDK_INT;
if(apiLevel<14)
values.put("visibility", 0);
Use la visibilidad solo si la versión del dispositivo es menor que 14 (ICS)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)