2015-04-17 18 views
19

mam to HTML:można autolink daty Android WebView

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

I chcę wiedzieć, jeśli jego możliwości automatycznego hiperłącze daty tak, gdy użytkownik naciśnie na nich można dodać je do użytkowników (telefon)? Dobrym przykładem tego, jak to powinno działać, jest Gmail. Kiedy jest data lub słowo (jutro, w ten piątek, itp.), Powinno być automatycznie połączone, aby data mogła zostać dodana do kalendarza.

Aktualizacja:

Czy ktoś wie, czy istnieje ex. javascript, który mogę dodać do aplikacji, która wykona dla mnie tę pracę?

+0

Czy html na swoje pytanie wewnątrz aplikacji na Androida? –

+0

@PedroLobito dzięki za odpowiedź, ale ten html pochodzi od strony serwera i nie mogę dodać tagu '# addtocalendar'. Czy masz jakieś inne obejście tego problemu? –

+0

tak, można [pobrać źródło html ze strony internetowej] (http://stackoverflow.com/a/4571551/797495), przekonwertować każdy link za pomocą regex lub podobnego narzędzia, a następnie załadować przekształcony html do webView za pomocą ' loadData', tj. 'webView.loadData (stringWithHtml," text/html; charset = UTF-8 ", null);' –

Odpowiedz

5

Tak, jest to możliwe.

Użyj metody do zatrzymania wszystkich łączy zawierających określoną wartość. Załóżmy, że utworzyć łącze takiego:

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

Teraz użyjemy shouldOverrideUrlLoading przechwycić kran i dodać wydarzenie do kalendarza, czyli:

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

Dodaj następujący uprawnienia do 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) 

Daj aplikacji hosta szansę na przejęcie kontroli, gdy nowy url ma być załadowany w bieżącym WebView.

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


Android Kalendarz Provider

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

0

Możesz użyć tego link, aby bezpośrednio przejść do określonej daty.

Gdzie, data = RRRRMMDD i tryb = dzień/miesiąc, zależnie od potrzeb.

Mam nadzieję, że to pomoże.