你能在android webview中自动链接日期吗?

Dar*_*ski 19 html javascript android android-webview android-calendar

我有这个HTML:

<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>
Run Code Online (Sandbox Code Playgroud)

而且我想知道是否可以自动超链接日期,以便当用户按下它们时您可以将它们添加到用户(手机的)日历中?这应该如何运作的一个很好的例子是Gmail.如果有日期或单词(明天,本周五等),则应自动链接,以便将日期添加到日历中.

更新:

有没有人知道是否有前任.我可以添加到应用程序的javascript将为我做这个工作?

Ped*_*ito 5

对的,这是可能的.

使用该WebViewClient方法shouldOverrideUrlLoading拦截包含特定值的任何链接.假设您创建了这样的链接:

<a href="#addtocalendar"> April 7th, 2015 - Add to Calendar</a>
Run Code Online (Sandbox Code Playgroud)

现在,我们将使用shouldOverrideUrlLoading截取点击并将事件添加到日历,即:

    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;
           }
      }
});
Run Code Online (Sandbox Code Playgroud)

添加以下权限 AndroidManifest.xml

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
Run Code Online (Sandbox Code Playgroud)

shouldOverrideUrlLoading

boolean     shouldOverrideUrlLoading(WebView view, String url)
Run Code Online (Sandbox Code Playgroud)

当新Web将要加载到当前WebView中时,为主机应用程序提供接管控件的机会.

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


Android日历提供商

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