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

今天收获很大,首先是弄通了自己的个人博客,以前总是依赖到别人的服务器,现在自己可以偷偷笑了,不过笑过之后还有很多的眼泪等着自己去留
流,满满两天的时间研究这个东东,不过很开心,毕竟在技术面前总是很多坑,只要自己不放弃总会可以普渡,同事感谢高志龙同事的帮助。愿大家
也能很快能搭建自己的博客。