android webview详解

来源:互联网 发布:黑帽seo如何赚钱 编辑:程序博客网 时间:2024/06/16 11:04

小伙伴们在开发安卓的时候一定会用到webview加载h5页面的,今天就来说说这货。
1 为什么要用呢
当然是为了节省成本了,假如,一个公司只有pc端的电商,现在想做移动端的电商了,那就可以直接把html加载到webview上了,节省了大量的成本;另外,尤其是在移动端,版本更新更加容易,不用每次都发布新版本,只要加载不同的html就可了,如果有bug的话就要发新版本了;

2 加载

        WebView webView = (WebView) findViewById(R.id.webview);        webView.loadUrl("http://www.baidu.com");        //获取h5的title        webView.setWebChromeClient(new WebChromeClient(){            @Override            public void onReceivedTitle(WebView view, String title) {                super.onReceivedTitle(view, title);            }        });        //webview自己加载html        webView.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });

3 下载

mWebView.setDownloadListener(new MyDownLoad()); //webview下载文件    class MyDownLoad implements DownloadListener {        @Override        public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {            //通过url下载,这个url就是文件地址            System.out.println("quyang="+url);              //调用系统下载,并且在通知栏显示进度            Uri uri = Uri.parse(url);            Intent intent = new Intent(Intent.ACTION_VIEW,uri);            startActivity(intent);        }    }

4 错误处理

mWebView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }            //webview异常毁掉            @Override            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {                super.onReceivedError(view, request, error);                //在此处加载本地预备好的错误页面                //gone掉webview            }        });

5 同步cookie(在handler中处理,下面是关键代码)

    CookieSyncManager.createInstance(this);        CookieManager instance = CookieManager.getInstance();        instance.setAcceptCookie(true);        instance.setCookie("登陆的url","cookie");        CookieSyncManager.getInstance().sync();        mWebView.loadUrl("登陆接口");
原创粉丝点击