
我们可以通过WebViewClient在WebView中加钩子来获取触发事件和相 应。下面是一个简单的例子,浏览器中显示目前的时间,并作为一个链接,当我们点击这个链接时,更新为当前最新时间。
package com.iteedu.webview;
import java.util.Date;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewExample extends Activity {
private WebView browser= null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
browser = (WebView)findViewById(R.id.WebView01);
browser.setWebViewClient (new WebViewClient() {
/* 这个事件,将在用户点击链接时触发。
* 通过判断url,可确定如何操作,
* 如果返回true,表示我们已经处理了这个request,
* 如果返回false,表 示没有处理,
* 那么浏览器将会根据url获取网页*/
public boolean shouldOverrideUrlLoading (WebView view, String url) {
loadTime();
return true ; //表 示已经处理了这次URL的请求
}
});
loadTime();
}
private void loadTime(){
String page="<html><body><a href=\"clock\">" +
new Date().toString() + "</a></body></html>";
/* 这里我们使用了loadDataWithBaseUrl的方式。
* 浏览器可以通过"file:///android_asset/"来获得映用中asset/的资源。
* 但是如果我们没有设置baseUrl,或者为空,这无法获取,
* 想获取这些资源,baseUrl不能设置为http(s)/ftp(s) /about/javascript
* 这些已有专属的定义。
* 在例子中,我们baseUrl设置为"wei://base".
* 对于上面的那个链接地址为wei://base/clock */
browser.loadDataWithBaseURL ("wei://base", page, "text/html","UTF-8", null);
}
}