1.使用WebView不要忘记加 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
虽然WebView也继承自View,但它的包名是ndroid.webkit
2. WebSettings : WebView组件有一个辅助类叫WebSettings,它管理WebView的设置状态,该对象可以通过WebView.getSettings()方法获得。
//得到WebSettings对象,设置支持Javascript的参数
webView.getSettings().setJavaScriptEnabled(true);
//设置可以支持缩放
webView.getSettings().setSupportZoom(true);
//设置默认缩放方式尺寸是far
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
//设置出现缩放工具
webView.getSettings().setBuiltInZoomControls(true);
3
WebView调用assets目录下的本地网页和图片等资源非常方便,为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为file:///android_asset/。WebView遇到这样的schema,就去当前包中的assets目录中找内容,如:
webView.loadUrl(file:///android_asset/html/test1.html);
4.WebChromeClient 和 WebViewClient
与WebView相关的辅助对象,除了WebSettings还有WebChromeClient和WebViewClient。
WebViewClient主要帮助WebView处理各种通知、请求事件,如:
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等,如:
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert无效,需要定制WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle
如果只是用来处理一些html的页面内容,只用WebViewClient就行了,如果需要更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient。
5.WebView调用js函数,并得到返回值,在android中必须注册到webView中一个java对象,并在js函数执行完后,通过这个对象对应的名称调用它的方法来返回值。但是这要求html中每个将被java代码主动调用的js函数必须预先知道有这个对象注册,并且要知道它的回调函数。
function callJs(param,tag)
{
var result=getCallResult(param);
javahome.handleJsResult(result,tag);
}
function getCallResult(param)
{
return param;
}
function fun1(param)
{
var a=1+9;
return param+" -- "+a;
}
</script>
{
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_UP)
{
Log.i("raw x,y",event.getRawX()+" "+event.getRawY());
Log.i("x,y",event.getX()+" "+event.getY());
String str=String.format("elementFromViewportPoint(%f,%f).tagName",event.getX(),event.getY());
callJs(str,"tag21");
}
return false;
}
});
{
String str=String.format("javascript:callJs(%s,'%s')",jsFunParam,tag);
Log.i("loadUrl",str);
webView.loadUrl(str);
}
public void handleJsResult(String str,String tag)
{
Log.i("handleJsResult "+tag ,str);
}
在firefox地址栏中输入:about:config,会出现配置页面。
Chrome的网页渲染引擎也是webkit