Android开发笔记(六十四)网页加载与JS调用

内置浏览器

网页视图WebView

如果一个网站已经有现成的网页及业务逻辑,那么使用WebView将其内嵌到app中,省去了app重画页面与http通信的事情,无疑是更经济的做法。WebView就是Android上的一个浏览器内核,可自动展示web页面,并且实现js代码的相互调用。
下面是WebView的常用方法:
getSettings : 获取浏览器的web设置信息。
addJavascriptInterface : 添加本地的js代码接口。
removeJavascriptInterface : 移除本地的js代码接口。在4.0至4.2的Android系统上,Webview自己增加了searchBoxJavaBredge_,可能被黑客利用导致远程代码执行。为阻止该漏洞,需要手工移除接口searchBoxJavaBredge_。代码如下所示:
wv_web.removeJavascriptInterface("searchBoxJavaBredge_");
setWebViewClient : 设置浏览器的加载事件。
setWebChromeClient : 设置浏览器的交互事件。
setDownloadListener : 设置文件下载监听器。
loadData : 加载文本数据。第二个参数表示媒体类型,如"text/html";第三个参数表示数据的编码格式,"base64"表示采用base64编码,其余值(包括null)表示url编码。
loadUrl : 加载url。
canGoBack : 判断页面能否返回。
goBack : 返回到上一个页面。


网页设置WebSettings

WebSettings用于操作WebView的web设置信息。其对象由WebView的getSettings方法得到。下面是WebSettings的常用设置方法:
setLoadsImagesAutomatically : 设置是否自动加载图片
setDefaultTextEncodingName : 设置默认的文本编码。如utf-8、gbk等等。
setJavaScriptEnabled : 设置是否支持Javascript
setJavaScriptCanOpenWindowsAutomatically : 设置是否允许js自动打开新窗口(window.open())
以上是基本的设置。
setSupportZoom : 设置是否支持缩放。
setBuiltInZoomControls : 设置是否出现缩放工具。
setUseWideViewPort : 当容器超过页面大小时,是否放大页面大小到容器宽度。
setLoadWithOverviewMode : 当页面超过容器大小时,是否缩小页面尺寸到页面宽度。
setLayoutAlgorithm : 设置自适应屏幕的算法,一般是LayoutAlgorithm.SINGLE_COLUMN。如果不做设置,4.2.2及之前版本自适应时可能会出现表格错乱的情况。
以上是网页与容器适配的设置。
setDomStorageEnabled : 设置是否启用本地存储。
setCacheMode : 设置是否使用缓存。LOAD_CACHE_ELSE_NETWORK表示优先使用缓存,LOAD_NO_CACHE表示不使用缓存,LOAD_CACHE_ONLY表示只使用缓存。
setAppCacheEnabled : 设置是否启用app缓存。
setAppCachePath : 设置app缓存文件的路径。
setAllowFileAccess : 设置是否允许访问文件,例如WebView访问sd卡的文件。不过assets与res文件不受此限制,仍然可以通过“file:///android_asset”和“file:///android_res”访问。
setDatabaseEnabled : 设置是否启用数据库。
以上是与存储有关的设置。


网页事件监听

主要有三个事件监听器,分别是WebViewClient、WebChromeClient和DownloadListener。


浏览器加载事件
WebViewClient主要用于处理。相关类名与方法说明如下:
监听器类名 : WebViewClient
设置监听器的方法 : setWebViewClient
监听器需要重写的方法 : 
onPageStarted : 页面开始加载。一般在此弹出进度对话框ProgressFialog
onPageFinished : 页面加载结束。一般在此关闭进度对话框。
onReceivedError : 收到错误信息。
onReceivedSslError : 收到ssl错误。
shouldOverrideUrlLoading : 重写该方法表明,点击网页里面的链接是在当前的webview里跳转,还是跳转到其它浏览器。如果想在当前的webview跳转,则加上下面这句代码:
view.loadUrl(url);


浏览器的交互事件
WebChromeClient主要用于。相关类名与方法说明如下:
监听器类名 : WebChromeClient
设置监听器的方法 : setWebChromeClient
监听器需要重写的方法 : 
onReceivedTitle : 收到页面标题
onProgressChanged : 页面加载进度发生变化
onJsAlert : 弹出js警告框。
onJsConfirm : 弹出js确认框。
onJsPrompt : 弹出js提示框。
onGeolocationPermissionsShowPrompt : 网页请求定位权限。通常重写该方法弹出一个确认对话框,提示用户是否允许网页获得定位权限。下面代码表示允许定位权限:
callback.invoke(origin, true, false);


文件下载事件
DownloadListener主要用于。相关类名与方法说明如下:
监听器类名 : DownloadListener
设置监听器的方法 : setDownloadListener
监听器需要重写的方法 : 
onDownloadStart : 文件开始下载。可在此设置文件下载的方式,以及文件的保存路径。


浏览器的应用场景

1、点击返回键返回上个页面,可监听返回键的按下事件,具体有两种方式,分别是重写onBackPressed函数,以及重写onKeyDown函数。
重写onBackPressed函数
	@Override
	public void onBackPressed() {
		if (wv_web.canGoBack()) {
			wv_web.goBack();
			return;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值