2015-04-17 12 views
19

Ich habe diesen HTML:Können Sie Termine in Android webview Autolink

<p> 
    <a href="http://en.wikipedia.org/wiki/Sauropelta">sawr-o-pel-te</a> meaning 'lizard shield' 
</p> 
<p> 
    April 7th, 2015 
</p> 
<p> 
    4/7/2015 
</p> 
<p> 
    April 7th 
</p> 
<p> 
    Next Monday 6th<br> 
</p> 
<p> 
    202 E South St<br> 
    Orlando, FL 32801 
</p> 
<h3>Quick Facts</h3> 
<ul> 
    <li>One of the most well-understood nodosaurids<span></span></li> 
    <li>The earliest known genus of nodosaurid<span></span></li> 
    <li>Measured about 5 meters (16.5 ft) long<span></span></li> 
    <li>The tail made up nearly half of its body length</li> 
</ul> 
<span></span> 

Und ich möchte wissen, ob ihre möglich, automatisch die Daten so Hyperlink zu, wenn der Benutzer drückt auf sie Sie sie an die Benutzer hinzufügen (Telefon-) Kalender? Ein gutes Beispiel dafür, wie dies funktionieren sollte, ist Google Mail. Wenn es ein Datum oder das Wort (morgen, diesen Freitag usw.) gibt, sollte es automatisch verknüpft werden, damit das Datum dem Kalender hinzugefügt werden kann.

Update:

Hat jemand wissen, ob es ein ex ist. Javascript, das ich der App hinzufügen kann, die diesen Job für mich erledigen wird?

+0

Ist die HTML-Datei auf Ihrer Frage innerhalb eines Android-App? –

+0

@PedroLobito danke für deine Antwort, aber dieser HTML-Code kommt von der Server-Seite und ich kann nicht das '# addtocalendar'-Tag hinzufügen. Haben Sie eine andere Problemumgehung? –

+0

Ja, Sie können [laden Sie die HTML-Quelle von der Website] (http://Stackoverflow.com/a/4571551/797495), konvertieren Sie jeden Link mit einem Regex oder ähnliches Werkzeug, und laden Sie die transformierte HTML zu WebView mit ' loadData', dh 'webView.loadData (stringWithHtml," text/html; Zeichensatz = UTF-8 ", null);' –

Antwort

5

Ja, es ist möglich.

Verwenden Sie die WebViewClient Methode shouldOverrideUrlLoading, um alle Links abzufangen, die einen bestimmten Wert enthalten. Angenommen, Sie haben einen Link wie folgt erstellen:

<a href="#addtocalendar"> April 7th, 2015 - Add to Calendar</a> 

Jetzt werden wir die shouldOverrideUrlLoading verwenden den Hahn abzufangen und das Ereignis in den Kalender, das heißt:

mWebView.setWebViewClient(new WebViewClient(){ 
     public boolean shouldOverrideUrlLoading(WebView wView, String url) 
     { 
      if (url.contains("addtocalendar")) { 
       Calendar cal = Calendar.getInstance();    
       Intent intent = new Intent(Intent.ACTION_EDIT); 
       intent.setType("vnd.android.cursor.item/event"); 
       intent.putExtra("allDay", false); 
       intent.putExtra("rrule", "FREQ=YEARLY"); //optional recurring event 
       intent.putExtra("beginTime", cal.getTimeInMillis()); 
       intent.putExtra("endTime", cal.getTimeInMillis()+3600000); // adds 1 hour 
       intent.putExtra("title", "Event on April 7th, 2015"); 
       startActivity(intent); 

       return true; 
      } 
     } 
}); 

Fügen Sie den folgenden Berechtigungen AndroidManifest.xml

<uses-permission android:name="android.permission.READ_CALENDAR" /> 
<uses-permission android:name="android.permission.WRITE_CALENDAR" /> 

shouldOverrideUrlLoading

boolean  shouldOverrideUrlLoading(WebView view, String url) 

Geben Sie die Host-Anwendung eine Chance, über die Kontrolle zu übernehmen, wenn eine neue url über ist in der aktuellen WebView geladen werden.

http://developer.android.com/reference/android/webkit/WebViewClient.html


Android Kalender Provider

http://developer.android.com/guide/topics/providers/calendar-provider.html

0

Sie können diese link verwenden, um direkt zu einem bestimmten Datum zu springen.

Wo, Datum = JJJJMMTT und Modus = Tag/Monat nach Ihrem Bedarf.

Hoffe, das hilft.