2015-04-17 15 views
19

ho questo html:Puoi autolink date in WebView Android

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

E voglio sapere se il suo possibile collegamento ipertestuale automaticamente le date in modo che quando l'utente preme su di loro è possibile aggiungerli agli utenti (del telefono)? Un buon esempio di come dovrebbe funzionare è Gmail. Quando c'è una data o la parola (domani, questo venerdì, ecc.) Dovrebbe essere collegata automaticamente in modo che la data possa essere aggiunta al calendario.

Aggiornamento:

Se uno sa se c'è un ex. javascript che posso aggiungere all'app che farà questo lavoro per me?

+0

È il codice html sul tuo interrogativo all'interno di un app Android? –

+0

@PedroLobito grazie per la tua risposta, ma questo html sta arrivando dal lato server e non posso aggiungere il tag '# addtocalendar'. Quindi hai qualche altro modo per aggirare la tua mente? –

+0

sì, è possibile [scaricare la sorgente html dal sito Web] (http://stackoverflow.com/a/4571551/797495), convertire ogni collegamento con un'espressione regolare o uno strumento simile e caricare l'html trasformato in webView con ' loadData', ovvero 'webView.loadData (stringWithHtml," text/html; charset = UTF-8 ", null);' –

risposta

5

Sì, è possibile.

Utilizzare il metodo shouldOverrideUrlLoading per intercettare eventuali collegamenti contenenti un determinato valore. Diciamo che si crea un link come questo:

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

Ora, useremo il shouldOverrideUrlLoading per intercettare il rubinetto e aggiungere l'evento al calendario, vale a dire:

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

Aggiungere il seguente le autorizzazioni per 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) 

Dare l'applicazione host la possibilità di prendere il controllo in caso di nuove URL sta per essere caricata nella WebView corrente.

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


Android Calendar Provider

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

0

È possibile utilizzare questo link per passare direttamente a una data specifica.

Dove, data = AAAAMMGG e modo = giorno/mese in base alle proprie esigenze.

Spero che questo aiuti.