studio proveedor personalizar horario hacer eventos evento crear como calendario agregar agenda android calendar android-intent

proveedor - personalizar calendario android studio



Cómo iniciar la aplicación Android Calendar usando Intent(Froyo) (6)

AgendaActivity carga la vista "Agenda".

Según mi experiencia, no se puede vincular en profundidad las actividades de día, semana y mes en stock de Android, sin embargo, puede usar "LaunchActivity" que carga la última vista abierta.

Quiero abrir la aplicación Calendario desde una aplicación de Android. Cuando busqué en línea, todo lo que obtuve es crear nuevos eventos con intención. Pude encontrar Intents para abrir Contactos y Galería, etc.

¿Es posible lanzar el calendario a una semana o día específico? Si es posible, ¿podría alguien ayudarme con eso?

Gracias por adelantado.


Después de revisar la aplicación de calendario en el código fuente de Android, solo puede invocar la AgendaActivity directamente. Los otros no funcionarán Como han señalado los otros carteles, puede interactuar directamente con el cursor para leer / crear eventos, pero no puede invocar la aplicación de calendario a una vista que no sea AgendaView. La razón es que los desarrolladores han limitado esa capacidad en el manifiesto de la aplicación Cal mediante el uso de las siguientes definiciones de actividad:

<activity android:name="MonthActivity" android:label="@string/month_view" android:theme="@style/CalendarTheme" /> <activity android:name="WeekActivity" android:label="@string/week_view" android:theme="@style/CalendarTheme" /> <activity android:label="@string/day_view" android:name="DayActivity" android:theme="@style/CalendarTheme"/> <activity android:name="AgendaActivity" android:label="@string/agenda_view" android:theme="@android:style/Theme.Light" android:exported="true" />

Tenga en cuenta que solo la AgendaActivity tiene android: exported = "true". Si intenta llamar a las otras actividades obtendrá una excepción de permiso.

Sin embargo, puede invocar AgendaActivity a un día arbitrario con el siguiente código:

Calendar tempCal = (Calendar) mCalendar.clone(); tempCal.set(year, month, day); Intent calendarIntent = new Intent() ; calendarIntent.putExtra("beginTime", tempCal.getTimeInMillis()); calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity"); startActivity(calendarIntent);


Por un proceso de tediosa experimentación, he descubierto que:

Intent calendarIntent = new Intent() ;
calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity");

... funciona para mí para iniciar la Actividad de Agenda del Calendario. No lo he intentado, pero tal vez com.android.calendar.DayActivity, .WeekActivity y .MonthActivity lanzarán las actividades correspondientes.


Puede abrir la vista de calendario de dos maneras:

1) por fecha particular 2) por evento particular

Para esto debes agregar los siguientes dos permisos

<uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" />

1) por fecha particular:

Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); builder.appendPath("time"); ContentUris.appendId(builder, Calendar.getInstance().getTimeInMillis()); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(builder.build()); startActivity(intent);

2) por evento particular:

long eventID = 200; Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri); startActivity(intent);

Nota: El proveedor de contenido de CalendarContract se agregó al SDK de Android en el nivel 14 de la API. Para obtener más información, puede visitar este link


Usar intenciones para ver datos del calendario

Calender Provider ofrece dos maneras diferentes de usar el intento de VER:

To open the Calendar to a particular date. To view an event.

agregar permisos para manifestar

<uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" />

Aquí hay un ejemplo que muestra cómo abrir el Calendario a una fecha en particular:

// A date-time specified in milliseconds since the epoch. long startMillis; ... Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); builder.appendPath("time"); ContentUris.appendId(builder, startMillis); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(builder.build()); startActivity(intent);

Aquí hay un ejemplo que muestra cómo abrir un evento para ver:

long eventID = 208; ... Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(uri); startActivity(intent);

Is it possible to launch the Calendar to a specific week or day?

Entonces, ahora es posible, pero requiere una min API 14 .

Para obtener más información, visite http://developer.android.com/guide/topics/providers/calendar-provider.html#intents


Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); intent.putExtra("title", "Some title"); intent.putExtra("description", "Some description"); intent.putExtra("beginTime", eventStartInMillis); intent.putExtra("endTime", eventEndInMillis); startActivity(intent);