calendario androide abierto con enlace html

Necesito abrir la aplicación de calendario en mi dispositivo Android mediante un simple enlace html. Podía hacer esto en iOS con href = CALSHOW: // ¿hay algo similar para android?

en alternativa hay alguna solución?

Gracias por adelantado.

En Android hay un método más poderoso que los esquemas ios urls. Intents Y es realmente realmente más poderoso!

Puede abrir el calendario o agregar un evento de calendario con los Intents (y muchos otros usos como abrir twitter, compartir una imagen en whatsapp, crear una nota en evernote …)

En este enlace puede encontrar la solución. Ten cuidado con android <4.0 porque la api del calendario cambia y se estandariza en Android 4.0. Leer este post también

Para agregar un evento de calendario, siga el siguiente código: (este es un ejemplo, tal vez no use todo esto o tal vez su formato de fecha es diferente)

/** * Creates a calendar event * * @param ce calendar event information * @return */ protected static boolean createCalendarEvent(Context context, CalendarEventCustomObject ce) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) return createCalendarEventIceCream(context, ce); else return createCalendarEventNormal(context, ce); } @SuppressLint("SimpleDateFormat") protected static boolean createCalendarEventNormal(Context context, CalendarEventCustomObject ce) { try { Intent calIntent = new Intent(Intent.ACTION_EDIT); calIntent.setType("vnd.android.cursor.item/event"); calIntent.putExtra("title", ce.description); calIntent.putExtra("eventLocation", ce.location); calIntent.putExtra("description", ce.summary); calIntent.putExtra("calendar_id", ce.id); // Add date info SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ"); Long start = Utils.parseDate(ce.start, df); if (start == null) { start = Utils.parseDate(ce.start, df2); if (start == null) start = System.currentTimeMillis(); } Long end = Utils.parseDate(ce.end, df); if (end == null) { end = Utils.parseDate(ce.end, df2); if (end == null) end = System.currentTimeMillis(); } calIntent.putExtra("beginTime", start); calIntent.putExtra("endTime", end); context.startActivity(calIntent); return true; } catch (Exception e) { return false; } } @SuppressLint("NewApi") protected static boolean createCalendarEventIceCream(Context context, CalendarEventCustomObject ce) { try { Intent calIntent = new Intent(Intent.ACTION_INSERT); calIntent.setType("vnd.android.cursor.item/event"); // Create intent and add string info calIntent.putExtra(Events.TITLE, ce.description); calIntent.putExtra(Events.EVENT_LOCATION, ce.location); calIntent.putExtra(Events.DESCRIPTION, ce.summary); calIntent.putExtra(Events.CALENDAR_ID, ce.id); // add date info SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ"); SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); Long start = Utils.parseDate(ce.start, df); if (start == null) { start = Utils.parseDate(ce.start, df2); if (start == null) start = System.currentTimeMillis(); } Long end = Utils.parseDate(ce.end, df); if (end == null) { end = Utils.parseDate(ce.end, df2); if (end == null) end = System.currentTimeMillis(); } calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start); calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end); calIntent.setData(CalendarContract.Events.CONTENT_URI); ((Activity) context).startActivity(calIntent); return true; } catch (Exception e) { return false; } } 

No sé si es ese enlace que WebView podría soportar, pero es muy fácil manejar ese enlace por ti mismo. Estoy asumiendo que usted está cargando el contenido web (html) en un WebView . Dentro del html tendrás este tipo de enlace:

 <a href="CALSHOW://">Open calendar</a> 

En el código Java, sobrescribirá ese enlace:

 myWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.startsWith("CALSHOW")) { openCalendar(); return true; } return super.shouldOverrideUrlLoading(view, url); } }); 

Y el método para abrir el calendario:

 protected void openCalendar() { Intent calendarIntent = new Intent() ; /** * Set the time you need ... * */ //calendarIntent.putExtra("beginTime", your_time); calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity"); startActivity(calendarIntent); } 

Ése es el trabajo alrededor

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.