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; 

webView.getSettings().setJavaScriptEnabled(true);   

webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);   

webView.setHorizontalScrollBarEnabled(false);   

webView.getSettings().setSupportZoom(true);   

webView.getSettings().setBuiltInZoomControls(true);   

webView.setInitialScale(70);   

webView.setHorizontalScrollbarOverlay(true);

2、在WebView的设计中,WebView主要完成解析、渲染界面。其他交给

(1)、事件监听对象(WebViewClient) 处理各种通知、请求事件的,具体来说包括:

事件监听对象WebViewClient中,主要有如下几个常用方法:

shouldOverrideUrlLoading:在web页面里单击链接的时候,会自动调用android自带的浏览器来打开链接,需要通过该方法在本页面打开;

@Override

    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        view.loadUrl(url);

        return true;

    }

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事件。

public boolean onKeyDown(int keyCode, KeyEvent event) {        

        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {        

            mWebView.goBack();        

                   return true;        

        }        

        return super.onKeyDown(keyCode, event);        

    }

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事件处理之前执行)。

android WebView, WebChromeClient和WebViewClient加载网页基本用法的更多相关文章

  1. Android中使用WebView, WebChromeClient和WebViewClient加载网页 (能够执行js)

    Android中使用WebView, WebChromeClient和WebViewClient加载网页   在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android ...

  2. Android中使用WebView, WebChromeClient和WebViewClient加载网页

    在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android 中提供了其很好的支持, 其中webView的一系列用法,比如 webView.getSettings().s ...

  3. 混合开发(一)——WebView开发高级技巧之加载网页以及JavaScript,加载进度条

    混合开发(一)--WebView开发高级技巧之加载网页以及JavaScript,加载进度条 现在关于混合开发也越来越多了,很多人喜欢跟随,比如HB,比如RN,其实这东西很早就有这么一个概念了,而且说实 ...

  4. Android webView 中loadData方法加载 带中文时出现乱码

    WebView出现乱码用LoadData方法来解析html的,但是据说这是官方的一个BUG,不能用来解析中文. 采用loadDataWithBaseURL的方法,其中codeingType设置为utf ...

  5. Android中的WebView进行直接加载网页(要注意解决权限问题)

    我们都知道Android的网络功能很不错,当然Android中WebView组件也挺不错,可以直接进行加载网页,我们可以把这个看做一个小型的浏览器\ [注]以下的一些内容我翻译了一下文档,可能有些翻译 ...

  6. Android使用Webview加载网页

    安卓使用Webview来加载和显示网页内容,首先在layout文件中定义Webview <?xml version="1.0" encoding="utf-8&qu ...

  7. Android中Http加载如何得到Cookie和 WebView 加载网页如何得到的Cookie

    最近做项目在手机端登录Http请求和 WebView 记载登录获取Cookie信息,可查看Cookie信息. 如图: Http请求获取Cookie信息: public static String re ...

  8. WebView之加载网页时增加进度提示

    上一节讲了一些webview的基本使用以及在记载网页时如何屏蔽掉第三方浏览器,使我们自己开发的程序成为一个微型浏览器.那么这一节将一下在webView加载网页的过程中如何加上进度提示.效果图如下: 主 ...

  9. WebView 加载网页和java 与js交互

    [mw_shl_code=java,true]WebView是一个可以显示网页的控件.需求:通过WebView加载assets下的html文件.实现页面的缩放.向menu键添加:前进.后退和刷新,实现 ...

随机推荐

  1. [置顶] 【原创分享】嵌入式linux应用之内核移植定制篇-前篇(linux-3.8.12 mini2440)--20130824

    移植的话其实很早就做过了,不过那时用的友善定制的老版本2.6.32 驱动什么的全部弄好了,仅仅用默认配置而已.基本不用改动什么,很简单. 内核更新其实非常的快,今天我就用个3.8.12来移植. 当然, ...

  2. (转载)tarjan求割点

    割点是无向图中去掉后能把图割开的点.dfs时用dfn(u)记录u的访问时间,用low(u)数组记录u和u的子孙能追溯到的最早的节点(dfn值最小).由于无向图的dfs只有回边和树边,且以第一次dfs时 ...

  3. bzoj 1197

    http://www.lydsy.com/JudgeOnline/problem.php?id=1197 我们考虑从低维向高维考虑. 记F[i][j]表示维度为i,用了j个球时最多能将空间划分为多少个 ...

  4. JVM基础和调优(一)

    最近的项目中,出现了内存和性能的问题,需要优化,所以趁着这个机会,把自己关于java虚拟机的东整理一下,不对的地方,欢迎指出. 数据类型,因为在java的优化的过程中,检测到的数据类型一般比较的基础, ...

  5. web.xml中contextConfigLocation的作用(转)

    原文地址:http://blog.csdn.net/zhangliao613/article/details/6289114 原文格式较乱,此处略作整理.内容未变. 在web.xml中使用contex ...

  6. iPhone应用提交流程:如何将App程序发布到App Store?

    对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store.Xcode 4.2开发工具已经把App提交 ...

  7. Netty实例-简单的服务端-client实现,凝视具体

           书籍推荐:                                       实例代码 :http://download.csdn.net/detail/jiangtao_st ...

  8. altium designer 原理图复制出错

    复制原理图的时候最后弹出这种错误 InvalidParameter at 2510219C. AdvSch.dll, Base Address: 24C80000. Exception Occurre ...

  9. js点击打开弹窗

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. android避免service被杀

    1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建@Override    public int onStartComma ...