AgentWeb是对WebView封装的比较不错的一个框架,一个简洁易用的 Android Web 库,具体使用大家可以点击后面的链接
本篇文章,我主要记录一下部分机型在使用AgentWeb或者WebView使用拦截URL中拦截不到的问题
首先先说下WebView如果想拦截某个url的话需要重写shouldOverrideUrlLoading这个方法,这个大家都知道
.setWebViewClient(new WebViewClient(){ @Override public booleanshouldOverrideUrlLoading(WebView view, String url) { Log.i("shouldOver", "###: "+url); if (url.contains("你的判断标准")) { WebActivity.this.finish(); return false; } return super.shouldOverrideUrlLoading(view, url); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Log.i("shouldOver", "@@@ "+request.getUrl().toString()); if (request.getUrl().toString().contains("你的判断标准")) { WebActivity.this.finish(); return false; } return super.shouldOverrideUrlLoading(view, request); } }
如上,拦截url有两个方法可以做到,那么这两个方法有什么区别呢?如何使用呢?
区别:注意红色字体部分和删除线部分,区别就在于使用版本不同,低版本已经废弃,但为了兼容还可以继续使用,而高版本(7.0以上)则需要使用最新的api,否则是监听不到url的
使用:建议在自己的项目中需要监听url时,为了兼容更多版本,两个方法都写上,写同一套业务逻辑即可