¿Cómo utilizar la intención del calendario?
Estoy intentando lanzar un calendario de mi app, así que puedo dejar a usuarios poner sus citas a él y después hacer que mi app lea ésos.
He probado el código que encontré aquí:
- ¿Hay alguna manera de consultar un tipo específico de filtros de intención aplicaciones capaces?
- ¿Cómo enviar un objeto de una actividad de Android a otro usando Intents?
- Qué intención para la configuración - Uso de datos
- Devolver el resultado de la intención cuando la actividad se cierra con el botón Atrás
- Haga que la actividad aparezca en el 'selector de fondos de escritorio'
ComponentName cn; Intent i = new Intent(); cn = new ComponentName("com.google.android.calendar", "com.android.calendar.LaunchActivity"); i.setComponent(cn); startActivity(i);
Y obtener el error
07-07 21:05:33.944: ERROR/AndroidRuntime(1089): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.google.android.calendar/com.android.calendar.LaunchActivity}; have you declared this activity in your AndroidManifest.xml?
Hice declarar el com.android.calendar.LaunchActivity
a mi archivo de manifiesto android y todavía no está funcionando …
Creo que esto no es posible usar el emulador? Estoy haciendo esto en Android 3.0 (HoneyComb).
- La intención de la cámara o la galería destruye la actividad antigua en algunos dispositivos
- El diálogo de selección de intenciones muestra el nombre del paquete además de la etiqueta Actividad
- Intento vacío (excepción nullpointer) en el flujo maestro / detallado al hacer clic en "arriba" en la barra de acciones
- ¿Cuál es la diferencia entre la actividad y la intención en Android?
- Actividad de registro para abrir cualquier archivo con cierta extensión
- Impulsión de impresión de Android Call para la causa de la aplicación HP e-print RuntimeException: No se puede iniciar la actividad
- ¿Cómo hacer que un botón envíe varias vistas de texto a mi correo electrónico?
- Cómo borrar todas las actividades de la pila en API 8?
Esto, de Andriod docs, trabajó para mí:
long startMillis = System.currentTimeMillis(); Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); builder.appendPath("time"); ContentUris.appendId(builder, startMillis); intent = new Intent(Intent.ACTION_VIEW).setData(builder.build()); startActivity(intent);
Más información aquí: Android docs calendario .
En primer lugar, no funcionará en el emulador, ya que la aplicación Calendario que está intentando utilizar no está en la imagen del emulador.
En segundo lugar, esta aplicación puede o no estar en cualquier dispositivo de producción. Cualquier persona que cree un Intent
usando un ComponentName
(apuntando al ComponentName
de otra persona) está pidiendo problemas en el mejor de los casos.
En tercer lugar, no podrá "hacer que mi aplicación los lea" de inmediato, incluso si el usuario elige agregar un evento. Solo estarán disponibles a través de Google Calendar GData API después de una sincronización, que puede que no sea inmediata.
Debes escribir esto
setContentView(R.layout.tabla); ComponentName cn; Intent i = new Intent(); cn = new ComponentName("com.android.calendar", "com.android.calendar.LaunchActivity"); i.setComponent(cn); startActivity(i);
Debe darle permiso a la aplicación para leer el calendario. Prueba a añadir esto a tu AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CALENDAR"></uses-permission>
Si utiliza API 14 o superior, puede usar este código
Intent intent = new Intent(Intent.ACTION_INSERT); intent.setData(CalendarContract.Events.CONTENT_URI); startActivity(intent)
La respuesta de apb traducida a MonoDroid es
long startMillis = Java.Lang.JavaSystem.CurrentTimeMillis( ); Uri.Builder builder = Android.Provider.CalendarContract.ContentUri.BuildUpon( ); builder.AppendPath( "time" ); ContentUris.AppendId( builder,startMillis ); Intent intent = new Intent( Intent.ActionView ); intent.SetData( builder.Build() ); StartActivity( intent );
La forma más sencilla de abrir el Calendario de Google sin una fecha determinada:
Uri calendarUri = CalendarContract.CONTENT_URI .buildUpon() .appendPath("time") .build(); startActivity(new Intent(Intent.ACTION_VIEW, calendarUri));
- Cómo decidir de qué actividad venimos?
- Llamar a un método de actividad de una clase BroadcastReceiver