webView加载https,然后拦截url出现的问题总结
之前公司对接h5的时候都是用的http,这次对接融360了换成https,首选考虑的就是证书问题,然后自己在onreceiveSserror这个方法里面设置了
handle.proceed,
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// super.onReceivedSslError(view, handler, error);
// if(error.getPrimaryError() == android.net.http.SslError.SSL_INVALID ){// 校验过程遇到了bug
// handler.proceed();
// }else{
// handler.cancel();
// }
Log.i(TAG, “onReceivedSslError” + error);
}
其次设置webview
private void initSetings(WebView wv) {
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setDomStorageEnabled(true);
wv.getSettings().setAllowFileAccess(true);
wv.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
wv.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
wv.getSettings().setMixedContentMode(
WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
}
}
最后在这个方法里面
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.contains(returnUrl)) {
// 拦截后做处理
// CLogUtil.showToast(getActivity(),”拦截成功”);
Log.i(“taowuhua”, “======h” + url);
financialFinish();
return false;
} else
// CLogUtil.showToast(getActivity(), “拦截失败”);
Log.i(“taowuhua”, “============hahah” + url);
view.loadUrl(url);
return true;
}
return true;好像代表是你本身处理了,webview就不管了,你要是返回false 网页还是会自动加载的 ,谨记
EventBus在跳转的时候无法成功获取数据
1.首先可以判断一下
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
2.取消注册 要写到 onDestroy 方法里,不要写到 onStop 里,有时会出现异常的哦
3.今天遇到了订阅事件无法执行的情况,分析后发现是订阅事件的 Activity 还未执行的原因。
找到原因就好办了,这时候就需要用到 postSticky。
发布事件时用 postSticky 操作:
1
EventBus.getDefault().postSticky(event);
订阅时,添加 sticky = true
//看下 @Subscribe
源码知道 sticky
默认是 false
@Subscribe(sticky = true)
public void onEvent(Event e) {
}
4.EventBus.getDefault().register(this); 注册时最好放到各变量初始化最后,否则可能会出现一些变量空指针异常。
跟老猫的谈话
今天面试结束,通过面试者的状态我看到了自己的缩影,只是使用三方的开源框架,自己并不了解底层的实现,更没去进行封装。
然后老猫给我进行了授渔,
举个简单的例子 okhttp
李炜 2017/12/6 16:37:19
你看原生用法
16:38:24
李炜 2017/12/6 16:38:24
new个okhttpclient.builder.url.build.call(params).execute(callback)
李炜 2017/12/6 16:38:57
很长 所以会考虑抽个工具类 单例的
李炜 2017/12/6 16:39:26
httputil.post(params,callback);
李炜 2017/12/6 16:39:38
提供这样的给业务层使用
李炜 2017/12/6 16:40:18
callback报文都是固定格式 所以会在工具里把code各种情况处理后 只返回正常的结果或者异常的信息.
16:40:41
李炜 2017/12/6 16:40:41
一个简单的网络请求代码封装就可以了.
李炜 2017/12/6 16:41:23
封装组件要低耦合(方便复用),易用(用着舒服)
李炜 2017/12/6 16:41:35
封装其实是牺牲了灵活性的.
目测自己的好日子到头了,fighting!!!也预祝自己今晚上线愉快。
hello
今天收获很大,首先是弄通了自己的个人博客,以前总是依赖到别人的服务器,现在自己可以偷偷笑了,不过笑过之后还有很多的眼泪等着自己去留
流,满满两天的时间研究这个东东,不过很开心,毕竟在技术面前总是很多坑,只要自己不放弃总会可以普渡,同事感谢高志龙同事的帮助。愿大家
也能很快能搭建自己的博客。
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1 | $ hexo new "My New Post" |
More info: Writing
Run server
1 | $ hexo server |
More info: Server
Generate static files
1 | $ hexo generate |
More info: Generating
Deploy to remote sites
1 | $ hexo deploy |
More info: Deployment