2013-06-20 5 views
4

J'ai besoin d'ouvrir l'application de calendrier sur mon appareil Android en utilisant un simple lien html. J'ai été en mesure de le faire dans iOS avec href = CALSHOW: // y at-il quelque chose de similaire pour Android?ouvrir le calendrier android avec le lien html

en alternative est-il une solution de contournement?

Merci d'avance.

+0

Avez-vous trouvé un moyen? – Robert

Répondre

-1

Je ne sais pas être un tel lien que WebView prendrait en charge, mais il est très facile de gérer ce lien pour vous-même. Je suppose que vous chargez le contenu Web (html) dans un WebView. A l'intérieur du html, vous aurez ce type de lien:

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

Dans le code Java, vous écraserez ce lien:

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

Et la méthode pour ouvrir le calendrier:

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); 
    } 

C'est la solution de rechange

+1

vous hank mais je ne peux pas écrire n'importe quel code java ... j'utilise un environnement où je peux seulement écrire html. merci quand même – user2504394

+0

... et c'est parce que vous développez la page Web et vous ne le chargez pas dans un 'WebView 'natif? – gunar

1

Sur Android, il existe une méthode plus puissante que t Il a des schémas d'uros. Intents Et c'est vraiment vraiment plus puissant!

Vous pouvez ouvrir le calendrier ou ajouter un événement de calendrier avec les Intentions (et beaucoup d'autres utilisations comme open twitter, partager une image sur WhatsApp, créer une note sur ... evernote)

En this link vous peut trouver la solution. Faites attention avec android < 4.0 parce que l'API du calendrier change et standardise sur Android 4.0. Read this this post too

Pour ajouter un événement de calendrier vous suivez le code suivant: (ceci est un exemple, peut-être de ne pas utiliser tout cela ou peut-être le format de date est différent)

/** 
* 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; 
    } 
} 
+0

vous hanke mais je ne peux pas écrire de code Java ... J'utilise un environnement où je peux seulement écrire html. merci quand même – user2504394

+0

Modifiez votre question et mettez cette information. Est-ce une page wep? ou c'est une page web dans un webView? – Aracem