你能否在Android WebView中自动链接日期?

19

我有这个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>

我想知道是否有可能自动将日期转换成链接,这样用户点击后可以将其添加到用户手机的日历中?

Gmail是一个很好的例子。当日期或单词(如tomorrow、this friday等)出现时,应自动创建链接,以便将日期添加到日历。

更新:

有没有人知道是否有可以为应用程序添加的JavaScript代码可以完成此工作?


你的问题中的HTML是否在Android应用程序中? - Pedro Lobito
@PedroLobito 感谢你的回答,但是这个HTML是从服务器端生成的,我无法添加#addtocalendar标签。那么你有其他的解决办法吗? - Darko Petkovski
是的,您可以从网站下载HTML源代码,使用正则表达式或类似工具转换每个链接,并使用loadData将转换后的HTML加载到webView中,例如:webView.loadData(stringWithHtml, "text/html; charset=UTF-8", null); - Pedro Lobito
2个回答

5

是的,这是可能的。

使用WebViewClient方法shouldOverrideUrlLoading拦截包含特定值的任何链接。比如说你创建一个链接,像这样:

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

现在,我们将使用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;
           }
      }
});

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)

当在当前的WebView中加载新的URL时,给主机应用程序一个控制权的机会。

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


安卓日历提供程序

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


0

您可以使用此链接直接跳转到特定日期。

其中,日期= YYYYMMDD,模式=根据您的需要选择day/month。

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接