WebView相关知识

为什么用WebView:
1.兼容已有的项目
2.可以动态更新

WebView webView;//通过findViewById找到
webView.loadUrl("网址");

但是loadUrl默认会通过手机浏览器打开,所以应该做下列修改:

webView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onReceivedTitle(WebView view, String title) {
            titleView.setText(title);//textview显示title
                super.onReceivedTitle(view, title);
            }
        });
        webView.setWebViewClient(new WebViewClient(){
            //重写urlLoading,这时设置在webView中显示
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                webView.loadUrl(url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        });

自定义webView的title:
界面刷新:webView.reload();

webView下载文件(2种方式):
1.自定义下载

webView.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
                //自定义HttpThread类,继承自Thread,然后在那里面实现下载逻辑
                new HttpThread().start();
            }
        });

2.通过系统方式执行一个下载命令:

Uri uri = Uri.parse(url);
        Intent intent = new Intent(Intent.ACTION_VIEW,uri);
        startActivity(intent);

webView错误码处理:
1.本地自己定义组件
2.加载本地写好的html文件:重写WebViewClient中的onReceivedError方法,加载本地html文件:

webView.loadUrl("file:///android_asset/error.html");

webView同步Cookie问题:
参考http://blog.csdn.net/xiaozhiwz/article/details/46459555

webView与JS调用混淆问题:代码进行混淆后,不能响应相应的方法,那么解决办法是对相应的类或方法不进行混淆。

webView导致的远程注入问题:
解决办法:减少JS的调用,把所有JS与webView的调用都通过自定义协议的方式去解决。

你可能感兴趣的:(webView,手机浏览器)