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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值