WebView相关知识

来源:互联网 发布:网狐6603数据库文档 编辑:程序博客网 时间:2024/05/16 12:12

为什么用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的调用都通过自定义协议的方式去解决。

0 0