¿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í:
- Envío de extras con una intención devuelta por getLaunchIntentForPackage () a la actividad principal de otra aplicación
- Intención de vídeo no guardar vídeo en la ubicación deseada
- ¿Buscando intentos de búsqueda en el mercado?
- Iniciar una aplicación desde otra aplicación en Android
- Aplicación para Android que sobrevive a la memoria limpia
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).
- ¿Cómo detectar las aplicaciones de Android que pueden manejar la acción de intención solicitada?
- Diferencia entre getExtras (). GetSerializable () y getSerializableExtra ()
- Abra el video de youtube en un momento específico con la intención de Android
- Múltiples actividades compitiendo una intención
- Proyecto no tiene archivo project.properties
- Android Widget Click y Broadcast Receiver no funciona
- El envío por correo electrónico de texto con formato HTML solo funciona con el cliente de Gmail
- Intent.FLAG_ACTIVITY_CLEAR_TOP no elimina la pila de actividades
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