¿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í:

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).

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)); 
  • Al crear una intención de Android y especificar la actividad de destino, ¿cuál es esta sintaxis ".class"?
  • selector personalizado de Android
  • Mensaje adicional de intención de Android versus variable estática
  • La intención de vinculación profunda no funciona
  • Intención de filtro basada en datos personalizados
  • Cómo detectar el estado de sincronización automática cambiado a través del receptor de difusión
  • Android-Libgdx, Llamando a Otra Actividad después de que el Juego comience en Button click
  • No se puede iniciar nuevo intento por setClassName con un paquete diferente en Android
  • Android, actividad de llamada dentro de sí mismo
  • Compartir intención con la opción Bluetooth solamente
  • Java y Android: ¿Cómo abrir varios archivos con una intención?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.