在开发过程中应该注意几点:
1.AndroidManifest.xml中必须使用许可”android.permission.INTERNET”,否则会出Web page not available错误。
2.如果访问的页面中有Javascript,则webview 必须设置支持Javascript。
webview .getSettings().setJavaScriptEnabled(true);
3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖webview 的WebView Client对象。
4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网页回退而不是推出浏览器,
需要在当前Activity中处理并消费掉该Back事件。
下一步让我们来了解一下android中webview 是如何支持javascripte自定义对象的,在w3c标准中js有window,history,document等标准对象,
同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以为所欲为了。
看一个实例:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.webview demo);
mWebView = (WebView ) findViewById(R.id.webview );
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});
}
}, "demo");
mWebView.loadUrl("file:///android_asset/demo.html");
}
}
我们看addJavascriptInterface(Object obj,String interfaceName)这个方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是interfaceName(demo),
作用域是 Global。这样初始化webview 后,在webview 加载的页面中就可以直接通过javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的。