android WebView, WebChromeClient和WebViewClient加载网页基本用法

WebView, WebChromeClient和WebViewClient加载网页基本用法
  webview是android中的浏览器控件,在一些手机应用中常会用到b/s模式去开发应用,这时webview的强大功能就会显示出来。
  1、webview的几点设置
  权限设置:.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误
  js开放设置: 如果访问的页面中有Javascript,则webview必须设置支持Javascript。webview.getSettings().setJavaScriptEnabled(true); 否则,页面的js将不会起作用.
  滚动条设置:this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
  设置缓存模式:setCacheMode
  要注意的是,其中的webView的一系列用法,比如 webView.getSettings().setJavaScriptEnabled(true);设置可以使用javscript;
  1.   webView.getSettings().setJavaScriptEnabled(true);
  2.   webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
  3.   webView.setHorizontalScrollBarEnabled(false);
  4.   webView.getSettings().setSupportZoom(true);
  5.   webView.getSettings().setBuiltInZoomControls(true);
  6.   webView.setInitialScale(70);
  7.   webView.setHorizontalScrollbarOverlay(true);
复制代码

  2、在WebView的设计中,WebView主要完成解析、渲染界面。其他交给
  (1)、事件监听对象(WebViewClient) 处理各种通知、请求事件的,具体来说包括:
  事件监听对象WebViewClient中,主要有如下几个常用方法:
  shouldOverrideUrlLoading:在web页面里单击链接的时候,会自动调用android自带的浏览器来打开链接,需要通过该方法在本页面打开;
  1.   @Override
  2.   public boolean shouldOverrideUrlLoading(WebView view, String url) {
  3.   view.loadUrl(url);
  4.   return true;
  5.   }
复制代码

  onLoadResource:加载资源时响应
  onPageStart:在加载页面时响应
  onPageFinish:在加载页面结束时响应
  onReceiveError:在加载出错时响应
  onReceivedHttpAuthRequest:
  (2)、WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
  onCloseWindow(关闭WebView)
  onCreateWindow()
  onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)
  onJsPrompt
  onJsConfirm
  onProgressChanged
  onReceivedIcon
  onReceivedTitle
  3、返回处理
  如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
  1.   public boolean onKeyDown(int keyCode, KeyEvent event) {
  2.   if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) 
  3. {
  4.   mWebView.goBack();
  5.   return true;
  6.   }
  7.   return super.onKeyDown(keyCode, event);
  8.   }
复制代码

  4、支持javascripte自定义对象
  可以通过addJavascriptInterface()方法,添加js自定义对象,使用web页面与手机java程序能够进行通信交互。
  5、DownloadListener接口
  该接口里面有一个方法,onDownloadStart()下载侦听接口,如果客户代码实现该接口,则在下载开始、失败、挂起、完成等情况下,DownloadManagerCore对象会调用客户代码中实现的DownloadListener方法。
  6、几个注意点
  1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
  2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的(今天我是在没有在handler中处理,所以导致webviewclient中的onPageStart方法与addJavascriptInterface中的方法起了冲突,二个人的执行顺序时常互换,之后改成handlder实现,就解决其中的问题,正确的顺序是onPageStart在addJavascriptInterface中的handlder事件处理之前执行)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值